题解 | #迷宫问题#
迷宫问题
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
#include <iostream> #include <vector> using namespace std; int n, m; vector<vector<int>> numV; vector<vector<int>> best_path; vector<vector<int>> temp_path; void find(int x, int y) { if (x < 0 || x >= n || y < 0 || y >= m || numV[x][y] == 1) return; temp_path.push_back({x, y}); numV[x][y] = 1; if (x == n - 1 && y == m - 1) best_path = temp_path; find(x - 1, y); find(x + 1, y); find(x, y - 1); find(x, y + 1); temp_path.pop_back(); numV[x][y] = 0; } int main() { while (cin >> n >> m) { numV = vector<vector<int>>(n, vector<int>(m, 0)); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> numV[i][j]; } } find(0, 0); for (int i = 0; i < best_path.size(); ++i) { cout << '(' << best_path[i][0] << ',' << best_path[i][1] << ')' << endl; } } return 0; }