华东理工大学博士答辩:麻烦大家看看我的马踏棋盘,为什么有个点跳不到啊!

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/01 02:47:12
#include <stdio.h>
#define cheboxrow 8
#define FALSE 0
#define TRUE 1
#define cheboxnum cheboxrow*cheboxrow
int horsejump(int i,int j,int chebox[][cheboxrow],int horstep)
{
if((++horstep==cheboxnum)&&chebox[i][j]==0)
{
return TRUE;
chebox[i][j]=horstep;
}
if(i<0||i>=cheboxrow||j<0||j>=cheboxrow||chebox[i][j]!=0)
{
horstep--;
return FALSE;
}
chebox[i][j]=horstep;
if(horsejump(i-1,j+2,chebox,horstep))
return TRUE;
else
if(horsejump(i-1,j-2,chebox,horstep))
return TRUE;
else
if(horsejump(i+1,j+2,chebox,horstep))
return TRUE;
else
if(horsejump(i+1,j-2,chebox,horstep))
return TRUE;
else
if(horsejump(i-2,j+1,chebox,horstep))
return TRUE;
else
if(horsejump(i-2,j-1,chebox,horstep))
return TRUE;
else
if(horsejump(i+2,j+1,chebox,horstep))
return TRUE;
else
if(horsejump(i+2,j-1,chebox,horstep))
return TRUE;
else{
chebox[i][j]=0;
horstep--;
return FALSE;
}
}
void main()
{
int startx,starty,horstep=0,tempx,tempy;
int chebox[cheboxrow][cheboxrow];
for(tempx=0;tempx<cheboxrow;tempx++)
for(tempy=0;tempy<cheboxrow;tempy++)
chebox[tempx][tempy]=0;
printf("现在是马踏棋盘游戏,规格为8*8形式!\n");
printf("请输入起始坐标startx,starty,用逗号隔开,范围在0-7之间:\n");
scanf("%d,%d",&startx,&starty);
if(horsejump(startx,starty,chebox,horstep))
for(tempx=0;tempx<cheboxrow;tempx++)
{
for(tempy=0;tempy<cheboxrow;tempy++)
printf("%3d",chebox[tempx][tempy]);
printf("\n");
}
else {
printf("对不起,程序出现问题!");
}

}