骑士之旅问题...解决方案按照假定的可能解决方案更改的顺序进行更改

时间:2019-05-19 20:09:45

标签: c++ recursion backtracking

我使用过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; 
}

0 个答案:

没有答案