POJ 3984 迷宫问题
迷宫问题#
定义一个二维数组:
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
int maze[5][5] = {
0, 1, 0, 0, 0,
0, 1, 0, 1, 0,
0, 0, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 1, 0,
};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
Input
一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。
Output
左上角到右下角的最短路径,格式如样例所示。
Sample Input
0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0
Sample Output
(0, 0) (1, 0) (2, 0) (2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (4, 4)
小技巧: 递归打印
1 #include <iostream> 2 #include <string> 3 #include <cstring> 4 #include <queue> 5 #include <cstdio> 6 7 using namespace std; 8 9 int maze[5][5]; 10 int vis[5][5]; 11 int dx[] = { 1,-1,0,0 }; 12 int dy[] = { 0,0,1,-1 }; 13 pair<int, int> father[6][6]; // father[i][j]表示点(i, j)的父节点的坐标 14 15 struct node 16 { 17 int x, y; 18 }; 19 20 void print(pair<int,int> p) 21 { 22 if (p.first == 0 && p.second == 0) 23 return; 24 else 25 { 26 print(father[p.first][p.second]); 27 printf("(%d, %d)\n", father[p.first][p.second].first, father[p.first][p.second].second); 28 } 29 } 30 31 32 int main() 33 { 34 for (int i = 0; i < 5; ++i) 35 for (int j = 0; j < 5; ++j) 36 cin >> maze[i][j]; 37 memset(vis, 0, sizeof(vis)); 38 39 node nod; 40 nod.x = nod.y = 0; 41 node t, p; 42 queue<node> Q; 43 Q.push(nod); 44 vis[0][0] = 1; 45 46 while (!Q.empty()) 47 { 48 t = Q.front(); 49 Q.pop(); 50 51 if (t.x == 4 && t.y == 4) 52 { 53 print(make_pair(4, 4)); 54 cout << "(4, 4)" << endl; 55 break; 56 } 57 58 for (int i = 0; i < 4; ++i) 59 { 60 int xx = t.x + dx[i]; 61 int yy = t.y + dy[i]; 62 63 if (xx >= 0 && xx < 5 && yy >= 0 && yy < 5 && maze[xx][yy] != 1 && !vis[xx][yy]) 64 { 65 vis[xx][yy] = 1; 66 p.x = xx; 67 p.y = yy; 68 father[p.x][p.y] = make_pair(t.x, t.y); 69 Q.push(p); 70 } 71 } 72 } 73 74 75 return 0; 76 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南