题解 | #迷宫问题#
迷宫问题
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;
}
查看28道真题和解析
