这是我写的骑士之旅的程序,执行是对的,但我总觉得有点问题,但是不知怎么解决
#include <stdio.h>
int step(int,int);
int next[2][8]={{2,1,-1,-2,-2,-1,1,2},{-1,-2,-2,-1,1,2,2,1}};
int chess[8][8]={0};
int counter;
main()
{
int i,j,x,y;
counter=1;
for(i=0;i<8;i++)
{
for (j=0;j<8;j++)
printf("%3d",chess[i][j]);
printf("\n");
}
printf("\n");
printf("Please input the initial location of the house(0--8)\n");
scanf("%d,%d",&x,&y);
chess[x][y]=1;
step(x,y);
for(i=0;i<8;i++)
{
for (j=0;j<8;j++)
printf("%3d",chess[i][j]);
printf("\n");
}
printf("\n");
}
int step(int startx,int starty)
{
int i,nextx,nexty;
for(i=0;i<=7;i++)
{
nextx=startx+next[0][i];
nexty=starty+next[1][i];
if (isValid(nextx,nexty)==1)
{
counter++;
chess[nextx][nexty]=counter;
step(nextx,nexty);
}
}
}
int isValid(int x,int y)
{
if ((x>=0 && x<=7 && y>=0 && y<=7) && (chess[x][y]==0))
return 1;
return 0;
}
int step(int,int);
int next[2][8]={{2,1,-1,-2,-2,-1,1,2},{-1,-2,-2,-1,1,2,2,1}};
int chess[8][8]={0};
int counter;
main()
{
int i,j,x,y;
counter=1;
for(i=0;i<8;i++)
{
for (j=0;j<8;j++)
printf("%3d",chess[i][j]);
printf("\n");
}
printf("\n");
printf("Please input the initial location of the house(0--8)\n");
scanf("%d,%d",&x,&y);
chess[x][y]=1;
step(x,y);
for(i=0;i<8;i++)
{
for (j=0;j<8;j++)
printf("%3d",chess[i][j]);
printf("\n");
}
printf("\n");
}
int step(int startx,int starty)
{
int i,nextx,nexty;
for(i=0;i<=7;i++)
{
nextx=startx+next[0][i];
nexty=starty+next[1][i];
if (isValid(nextx,nexty)==1)
{
counter++;
chess[nextx][nexty]=counter;
step(nextx,nexty);
}
}
}
int isValid(int x,int y)
{
if ((x>=0 && x<=7 && y>=0 && y<=7) && (chess[x][y]==0))
return 1;
return 0;
}
...全文
相关推荐
贪心算法解决骑士游历问题(C语言版)
C语言解决骑士游历问题,算法是:贪心算法。全局变量比较多。 稍后会在博客写出思路。标题:骑士游历问题(C语言代码)
chess-knight:骑士之旅解决方案和变化
象棋马 一匹马可以穿越整个棋盘吗?
骑士之旅:在 N*N 棋盘上完成开放骑士之旅的功能-matlab开发
骑士之旅是一个骑士访问棋盘的每一个方格而不重新访问任何方格的问题; 遵循与国际象棋游戏相同的运动规则。 开放式骑士之旅不会像封闭式之旅那样从它开始的地方开始。 这个问题可以追溯到 9 世纪 这段代码创建了一个 N*N 棋盘,然后骑士尝试从 (1,1) 开始遍历整个棋盘。 该算法蛮力,但 StepCheck 函数可确保不会选择以前访问过的方块。
骑士游历问题-回溯法
输入棋盘大小NxN 以及初始位置 程序会运行得到有力方法,用棋盘输出
骑士之旅:使用JavaScript构建的骑士之旅拼图
骑士之旅:使用JavaScript构建的骑士之旅拼图-源码


