为什么我的迷宫求解器不起作用
Why does my maze solver not work?
我正在尝试编写一个程序,该程序可以递归地解决特定的输入迷宫,并在每次移动后输出其在迷宫中的位置。
每当我尝试运行我的代码时,它都会立即崩溃,并且出现"迷宫.exe已停止工作"错误。
为什么我的代码不起作用?
#include <iostream>
#include <stdio.h>
using namespace std;
const int MazeHeight = 12;
const int MazeWidth = 16;
char Maze[MazeHeight][MazeWidth + 1] =
{
{'S','.','.','.','.','#','.','.','.','#','.','.','.','.','.','.'},
{'#','#','#','#','.','#','.','#','.','#','.','#','#','#','#','.'},
{'.','.','.','.','.','#','.','#','.','.','.','#','.','#','#','.'},
{'.','#','#','#','#','#','.','#','.','.','.','#','.','#','#','.'},
{'.','.','.','.','.','.','.','#','.','#','#','#','.','#','#','.'},
{'#','#','#','#','#','#','#','#','.','#','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','#','#','#','#','#','#','.'},
{'.','#','#','#','#','#','#','#','.','.','.','#','.','.','.','.'},
{'.','.','.','.','.','.','.','#','#','#','.','#','#','#','#','#'},
{'#','#','#','#','#','#','#','#','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','#','#','#','#','#','#','#','#','.'},
{'G','#','#','#','#','#','.','.','.','.','.','.','.','.','.','.'},
};
const char Wall = '#';
const char Free = '.';
const char Start = 'S';
const char End = 'G';
int solve(int X = 0, int Y = 0)
{
while(Maze[Y][X] != End){
if (Maze[Y][X] == End)
{
cout << X << Y << endl;
}
else if (X > 0 && Maze[Y][X - 1] == Free && solve(X - 1, Y))
{
cout << X << Y << endl;
}
else if (X < MazeWidth && Maze[Y][X + 1] == Free && solve(X + 1, Y))
{
cout << X << Y << endl;
}
else if (Y > 0 && Maze[Y - 1][X] == Free && solve(X, Y - 1))
{
cout << X << Y << endl;
}
else if(Y < MazeHeight && Maze[Y + 1][X] == Free && solve(X, Y + 1))
{
cout << X << Y << endl;
}
else Maze[Y][X] = Free;
}
return 0;
}
int main(int argc, char** argv){
// how do i call from here?
}
首次调用main
时,运行时环境会向其传递参数,因此不使用默认参数。 重命名函数并从 main
调用它。
这背后可能有一个很好的理由,但我不确定为什么你忽略你的 const int 16 作为最大宽度并使其成为 17。可能无法解决问题,但对我来说肯定是错误的。
也像评论者说为什么要在main的括号内初始化X和Y?为什么不直接在主内部进行。或者正如另一张海报所说,将该主函数转换为单独的函数,然后在新的主函数中调用它。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 编译在我的 Mac 上工作,但在集群 (Linux) 上不起作用
- 为什么我的数组双精度函数不起作用?
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- N-queen问题:无法弄清楚为什么我的解决方案不起作用
- C++ - 块不移动,我的数组不起作用
- 我不明白为什么我的代码不起作用并且需要更长的时间来运行
- EOF有更安全的替代方案吗?它在我的情况下不起作用
- 我正在尝试解决一个需要数组总和值但代码不起作用的问题,我想做这样的事情
- binary_search() 函数在我的函数体中不起作用
- 为什么我的打印功能不起作用?链表
- 为什么我的 arduino 按钮在 0 和 1 以外的端口上不起作用?
- 为什么我的数组或函数不起作用?
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- 我有一个应该打印数组的函数,但由于某种原因它不起作用
- 当我的阵列达到一定大小时,Qt 不起作用
- 包括不起作用C 的文件
- 我的加载图像不起作用 - 我需要知道为什么