酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C++ 利用栈算法求解 5×6 迷宫从起点到终点的唯一路径

```cpp #include <iostream> #include <stack> using namespace std; struct Point { int x; int y; }; bool isSafe(int x, int y, int m, int n, int maze[][6]) { return (x >= 0 && x < m && y >= 0 && y < n && maze[x][y] == 0); } void findPath(int maze[][6], int m, int n) { stack<Point> s; Point start = {1, 1}; s.push(start); while (!s.empty()) { Point current = s.top(); if (current.x == m - 2 && current.y == n - 2) { break; } maze[current.x][current.y] = 1; if (isSafe(current.x + 1, current.y, m, n, maze)) { Point next = {current.x + 1, current.y}; s.push(next); continue; } if (isSafe(current.x, current.y + 1, m, n, maze)) { Point next = {current.x, current.y + 1}; s.push(next); continue; } if (isSafe(current.x - 1, current.y, m, n, maze)) { Point next = {current.x - 1, current.y}; s.push(next); continue; } if (isSafe(current.x, current.y - 1, m, n, maze)) { Point next = {current.x, current.y - 1}; s.push(next); continue; } s.pop(); } while (!s.empty()) { Point p = s.top(); s.pop(); cout << p.x << " " << p.y << endl; } } int main() { int maze[5][6] = { {1, 1, 1, 1, 1, 1}, {1, 0, 0, 1, 0, 1}, {1, 1, 0, 1, 0, 1}, {1, 0, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 1} }; findPath(maze, 5, 6); return 0; } ``` ######[AI写代码神器 | 579点数解答 | 2024-11-03 03:57:12]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]