作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现一个问题的解决方案,其中我需要在迷宫中从源头到目标递归地找到一条路径。
假设这是迷宫:
哪里
小号 X X X X X
. . . . . X
X 。 X X X X
X 。 X X X X
. . . X 。 G
××。 . . X
X- 阻塞路径
.- 打开路径
S-开始
G -目标
我已经编写了以下代码来实现该解决方案,但它给了我一个段错误。如果有人可以建议我哪里做错了,我会很高兴。
我的解决方案是
#include<iostream>
using namespace std;
void printGrid(char grid[6][6])
{
for(int i=0;i<6;i++)
{
for(int j=0;j<6;j++)
{
cout<<grid[i][j]<<" ";
}
cout<<"\n";
}
}
bool isValidPoint(char grid[6][6],int x,int y)
{
if(x<0 || x>5 || y<0 || y>5)
{
return false;
}
if(grid[x][y]=='X')
{
return false;
}
return true;
}
bool traceMaze(char grid[6][6],int x,int y)
{
if(!isValidPoint(grid,x,y))
{
return false;
}
if(grid[x][y]=='G')
{
return true;
}
grid[x][y] = '+';
if(traceMaze(grid,x-1,y)){return true;}
if(traceMaze(grid,x,y+1)){return true;}
if(traceMaze(grid,x+1,y)){return true;}
if(traceMaze(grid,x,y-1)){return true;}
grid[x][y] = '.';
return false;
}
int main()
{
char grid[6][6] = {{'S','X','X','X','X','X'},{'.','.','.','.','.','X'},{'X','.','X','X','X','X'},{'X','.','X','X','X','X'},{'.','.','.','X','.','G'},{'X','X','.','.','.','X'}};
cout<<"Initial grid is as follows :\n";
printGrid(grid);
cout<<"\nStarting at : (0,0)\nTracing the path to the Goal\n";
cout<<traceMaze(grid,0,0)<<"\n";
cout<<"\nFinal grid is as follows :\n";
printGrid(grid);
return 0;
}
PS:我假设迷宫的大小是 6X6...
Correct Solution :
我没有对“+”进行任何检查以查看最终跟踪路径。
所以现在我在那里应用了检查,isValidPoint
函数转换为:
bool isValidPoint(char grid[6][6],int x,int y)
{
if(x<0 || x>5 || y<0 || y>5)
{
return false;
}
if(grid[x][y]=='X' || grid[x][y]=='+')
{
return false;
}
return true;
}
谢谢大家的帮助:)
我去年接受了这个问题的全职面试。
最佳答案
没有什么可以阻止您的 traceMaze 函数无限递归。也就是说,它将从一个网格点移动到下一个网格点,然后再回到原来的位置。
最简单的解决方法是不要将其中带有“+”的点视为进入的有效点(因为您已经在这条路径中到达那里)。
关于c++ - 追踪迷宫以从源头到达目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26154439/
navigator.serviceWorker.register('/service-worker.js'); 如何在不初始化额外 AJAX 请求的情况下检索 /service-worker.js h
我有一个 Angular 前端 、 spring 云网关 和一个 spring web 服务 。当我尝试通过网关将 GET/POST 数据发送到 Spring Web 服务时,我收到以下错误: COR
我是一名优秀的程序员,十分优秀!