以下是我希望使用递归解决的迷宫的表示。 S是起点,F是终点。顶部和左侧的数字代表坐标。
我已编写代码,但问题是当当前位置为3,2时,下一个当前位置有3个选项:top,left和down。
如果我删除了向左移动的选项,那么它就会被正确解决并且输出为"迷宫未解决"因为当前正数永远不会达到F(完成坐标)。
但是,在向左的情况下,我得不到解决方案,并且运行无限循环。
这里是代码的一部分(仅包括方向== 3,这意味着如果下一步将向左移动):
bool solveRecursive(char grid[][6],int siz, int curRow, int curCol, int direction,bool check)
{
while(check==0)
{
if(curRow==4 && curCol==0)
{
check = 1;
}
else if (direction == 3) // If open space in west
{
//}
if(grid[curRow][curCol-1] == '.')
{
curCol--;
check = solveRecursive(grid,siz,curRow,curCol,3,check);
}
if (grid[curRow-1][curCol] == '.')
{
curRow--;
check = solveRecursive(grid,siz,curRow,curCol, 0,check);
}
else if (grid[curRow+1][curCol] == '.')
{
curRow++;
check = solveRecursive(grid,siz,curRow, curCol, 2,check);
}
else
return 0;
}
}
return check;
}