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

查看11道真题和解析