我创建了一个专门为此目的处理2D矢量的类板。我正在努力解决骑士之旅。我想在完成时打印出来。使用递归voyagingKnight()函数,我发现它不做任何事情,不打印结果。看来,我想增加递归调用的步数,但这是行不通的。C++使用递归进行骑士之旅
矢量自变量incs是用于移动骑士的增量矢量的第2个矢量,每行中第一列移动一行,第二列移动列移动。
有没有人有任何建议,我在这里的推理缺陷? 相关的代码
bool voyaging_knight(Board &board, int i, int j, int steps ,vector< vector<int> > &increments)
{
if(!newplace(theboard, i, j)) return false;
board.setval(i,j,step);
if(gone_everywhere(board, steps))
{
cout <<"DONE" << endl;
board.showgrid();
return true;
}
int n;
int in, jn;
for(n=0; n<8; n++)
{
in = i + increments[n][0];
jn = j + increments[n][1];
if(inboard(board, i, j)&& newplace(board,i,j))
{
voyaging_knight(board, in, jn, steps+1 ,increments);
return true;
}
}
theboard.setval(i,j,-1);
}
这将是一个正常的棋盘上64个电话非常深的递归。你确定你不想只使用循环? – lapk