我使用过Movex和Movey两个数组,这些数组为我提供了下一个可能的解决方案,但是在更改这些可能的解决方案的顺序时,我的代码未显示正确的结果,为什么? ps:第1步在第A [0] [0]位为0。
如果我通过movex和movey作为 int movex [8] = {2,2,-2,-2,1,1,-1,-1}; int movey [8] = {1,-1,1,-1,2,-2,2,-2}; 它会运行并给出正确的结果,直到我的基本情况为== 62如果我将基本情况设置为== 64(即此处需要),它根本不会显示任何输出,但是如果我通过movex和movey作为 int X [8] = {2,1,-1,-2,-2,-1,1,2}; int Y [8] = {1,2,2,1,-1,-2,-2,-1}; 给出正确的结果
bool knightProblem(int A[][8],int i,int j,int m,int movex[],int movey[]){
if(m==64){
return true;
}
int nextx,nexty,k;
for(k=0;k<=7;k++){
nextx=i+movex[k];
nexty=j+movey[k];
if(isSafe(A,nextx,nexty)){
A[nextx][nexty]=m;
if(knightProblem(A,nextx,nexty,m+1,movex,movey)==true){
return true;
}
else{A[nextx][nexty]=-1;}
}
}
return false;
}