迷宫问题 原创
算法标签 dfs
题目
有如下 8*8 的迷宫
O X X X X X X X O O O O O X X X X O X X O O O X X O X X O X X O X O X X X X X X X O X X O O O X X O O O O X O O X X X X X X X O
其中,O 表示通路方块,X 表示障碍方块。
假设入口位置是(0,0),出口位置为右下角方块位置是(7,7)。
设计一个程序求指定入口到出口的一条迷宫路径。
方便获取的数据
"OXXXXXXX",
"OOOOOXXX",
"XOXXOOOX",
"XOXXOXXO",
"XOXXXXXX",
"XOXXOOOX",
"XOOOOXOO",
"XXXXXXXO"
答案
XXXXXXX
OOOXXX
X XXOOOX
X XXOXXO
X XXXXXX
X XX X
X X
XXXXXXXO
代码
完整代码
#include<iostream>
#include<string.h>
using namespace std;
const int max = 8+2;
string map[] = {
"OXXXXXXX",
"OOOOOXXX",
"XOXXOOOX",
"XOXXOXXO",
"XOXXXXXX",
"XOXXOOOX",
"XOOOOXOO",
"XXXXXXXO"
};
int beginX=0,beginY=0;
int endX=7,endY=7;
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
void dfs(int x,int y){
if(x==endX&&y==endY){
for(int i=0;i<sizeof(map)/map[0].length();i++)
{
for(int j=0;j<map[0].length();j++)
cout<<map[i][j];
cout<<endl;
}
}
else {
for(int i=0;i<4;i++){
if((unsigned int)x<(int)(sizeof(map)/map[0].length())
&&(unsigned int)y<(int)(map[0].length())
&&map[x][y]=='O'){
map[x][y]=' ';
dfs(x+dx[i],y+dy[i]);
map[x][y]='O';
}
}
}
}
int main(){
dfs(beginX,beginY);
return 0;
}
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)