const m=50
const n=50
int step[4][2]=
{
-1,0,
1,0,
0,-1,
0,1
}
int matrix[m][n]={0,};
int remain = 0;
void travelpanel(int xextra,int yextra,int curX,int curY)
{
curX += xextra;
curY += yextra;
int i;
if ( (curX <= n && curX >= 0 ) && (curY <= m && curY>=0)
&& matrix[curY][curX] == 0)
{
matrix[curY][curX] = remain;
remain --;
if(!remain) //所有的方块都覆盖完了
{
//找到了一个好的通道,按矩阵里面数据值m*n,m*n-1,...,1,
//从大到小顺序所在的x,y打印出来,就是一条覆盖路径
}
else
{
for( i = 0 ; i < 4; i++)
travelpanel(step[i][0],step[i][1],curX,curY);
}
matrix[curY][curX] = 0;
remain ++;
}
}
void travel(void)
{
int i;
matrix[0][0] = remain;
remain -- ;
for( i = 0 ; i < 4; i++)
travelpanel(step[i][0],step[i][1],0,0);
}
void main(void)
{
remain = m*n;
travel();
}
随手写了一个,因为要所有可能的路径,所以路径打印部分烦了一点,没有写代码,如果只打印一条的话,会方便很多
程序是现写的没有编译过,可能会有语法错误,打印路径部分没有写