我已经努力解决这个问题几个小时了。我希望使用递归函数来解决用户输入给出的迷宫。迷宫的结构如下所示:
##########
# ### #
# # #
# #
# o #
# #
##########
bool searchMaze(int currR, int currC)
if (currR > (rows-1) || currC > (columns-1) || currR < 0 || currC < 0)
return false;
if (maze[currR][currC] == "o")
return true;
if (maze[currR][currC] == "#")
return false;
maze[currR][currC] = "+";
if (searchMaze((currR - 1), currC) == true)
{
return true;
}
if (searchMaze(currR, (currC + 1)) == true)
{
return true;
}
if (searchMaze((currR + 1), currC) == true)
{
return true;
}
if (searchMaze(currR, (currC - 1)) == true)
{
return true;
}
maze[currR][currC] = " ";
return false;
}
Run Code Online (Sandbox Code Playgroud)
这是我上面的递归方法,“o”标记了一个解决方案。每次运行该程序时,我都会面临无限递归并收到错误
“在projectName.exe中的0x002396DA处抛出异常:0xC0000005:访问冲突写入位置0x000A0FFC”和“在projectName.exe中的0x002396DA处发生未处理的异常:0xC0000005:访问冲突写入位置0x000A0FFC”。
添加缺失的案例:
if (maze[currR][currC] == "+")
return false; // Already visited
Run Code Online (Sandbox Code Playgroud)
您正在追踪已经访问过的踪迹,并且没有使用'+'您追踪的标记,从而导致无限递归并且迭代不收敛。
| 归档时间: |
|
| 查看次数: |
1537 次 |
| 最近记录: |