gpt4 book ai didi

C++堆栈迷宫求解程序

转载 作者:行者123 更新时间:2023-11-28 03:26:19 26 4
gpt4 key购买 nike

我写了一个程序来生成迷宫并解决它,但是它在解决部分存在一些错误。

形成一个5*5或16*16的正方形迷宫。

迷宫开始于(二维数组中的 0,0,结束于(size()-1, size()-1)。

我用“1”来表示结束的路径。从下图中可以看出,虽然程序可以找到导出,但有一些不需要的'1'。

请问大家,我真的无法调试这个。谁能帮助我或指导我?非常感谢!

截图在这里。我不允许直接发布图像 https://photos-1.dropbox.com/t/0/AADjdwSgmLdVKCZrI1C-gDvwZ9ORj0rGbv3UJ7AYqXWeuA/10/7014161/png/2048x1536/2/1355295600/0/2/bug.png/5sQR3E_jcow4lWIy9cFf2FYbmwl0C_sd2cfCyMPe0MU

我的代码在这里 https://www.dropbox.com/s/vldkcv4fy6bp1ff/Source.cpp

问题解决了谢谢大家

我解决迷宫的原始代码是

`否则如果(随机数==1){

        if (y+1<myMaze.size() && !myMaze[x][y+1].left && !myMaze[x][y+1].visited)
{
y++;
myMaze[x][y].truePath=true;
myMaze[x][y].visited=true;
s1.push(myMaze[x][y]);
randomNum=rand()%4;
}
else
{
rightBusted=true;
randomNum=rand()%4;
}`

然后我只是在if语句中添加这些代码来将bool变量重置为false,然后问题就解决了

            downBusted=false;
rightBusted=false;
topBusted=false;
leftBusted=false;

最佳答案

你可以调试这个,伙计。就是这样。您已经拥有执行此操作所需的工具;他们所需要的只是一点点调整。

您最好的调试工具是您的 displayMaze() 例程。你只需要给它添加两个可选参数就可以把它变成一个强大的调试工具:

void displayMaze(const vector < vector<Cell> >& arr, int curX=-1, int curY=-1)
{
.
.
.

现在,如果调用者省略 curX 和 curY,编译器将填充默认值 -1。现在稍后在该函数中,打印一个不同的字符来指示“当前迷宫位置”。这是我的做法,它“似乎有效”,但我不能保证它是因为我懒得去真正理解你的逻辑:

            if (curX>=0 && curY>=0 && curX==i/2 && curY==j) // ++++++++++++
cout << " * "; // * means "current position" // ++++++++++++
else if (!arr[i/2][j].truePath)
cout << " ";
else
cout << " 1 ";

现在您的程序中内置了一个强大的调试工具。当 main() 在没有两个额外参数的情况下调用它时,不会打印星号。但是当您从 solveMaze() 调用它时,您可以指定“当前位置”,这样它就会用“*”标记该位置。在 solveMaze() 中,添加几个变量来跟踪“当前位置”...

int x=0, y=0;
int curX=x, curY=y; // ++++++++++++++++

...然后,在循环的顶部,只需调用强大的调试工具,这样您就可以逐步了解整体解决方案的当前状态:

int i=0;
while (!exitFound)
{
displayMaze(myMaze, curX, curY); // +++++++++++++++++
.
.
.

现在,无论您在哪里更改您认为是“当前位置”的位置,只需相应地更新 curX 和 curY,您的调试工具就会让您保持更新,这样您就可以看到以图形方式展开的解决方案(好吧,伪图形方式).您甚至可以在关键逻辑决策点添加调试 cout 消息,这样您就可以将这些决策点与您看到的解决方案相关联,这样您就可以查看是否/何时出现问题。如果您发现问题,您可以在输出中向上滚动以查看哪里出了问题。

祝你好运!

关于C++堆栈迷宫求解程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13833534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com