题解 | #迷宫问题#
迷宫问题
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
// HJ43-3 迷宫问题.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 #include<iostream> #include<bits/stdc++.h> using namespace std; #define N 10 #define M 10 int dp[N][M]; int n, m; int vis[N][M]; vector<pair<int, int>>cur, ans; void dfs(int a, int b) { if (a < 0 || b < 0 || a >= n || b >= m || vis[a][b] || dp[a][b] == 1) { return; } cur.push_back({ a, b }); vis[a][b] = 1; if (a == (n - 1) && b == (m - 1)) { ans = cur; } dfs(a - 1, b); dfs(a + 1, b); dfs(a, b - 1); dfs(a, b + 1); vis[a][b] = 0; cur.pop_back(); } int main() { //int n, m; while (cin >> n >> m) { //vector<vector<int>>dp(n, vector<int>(m,0)); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> dp[i][j]; } } dfs(0, 0); for (auto c : ans) { cout << "(" << c.first << "," << c.second << ")" << endl; } } return 0; }