```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; } ``` [2024-11-03 03:57:12 | AI写代码神器 | 579点数解答]