题目描述
代码
#include<bits/stdc++.h>
using namespace std;
const int n = 10;
char mp[n + 5][n + 5];//存放迷宫图
bool vis[n + 5][n + 5];//标记走过的点
int ans = 0,cnt = 0;
bool dfs(int i,int j){
if(i < 0 | i > n - 1 | j < 0 | j > n-1){
//走出迷宫的条件
return true;
}
if(vis[i][j]){
//如果这个点走过,那就代表兜圈子了就出不去
return false;
}
cnt++;
vis[i][j] = true;//把当前这个点标记为走过的点
if(mp[i][j] == 'L') return dfs(i,j-1);//向左走
if(mp[i][j] == 'R') return dfs(i,j+1);//向右走
if(mp[i][j] == 'U') return dfs(i-1,j);//向上走
if(mp[i][j] == 'D') return dfs(i+1,j);//向下走
}
int main()
{
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
cin>>mp[i][j];//输入迷宫
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
//每次搜索这个人能不能出去前,需要先把之前标记走过的路径标记清除
memset(vis,0,sizeof(vis));
if(dfs(i,j)){
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
得出答案是31,填空题直接输出31就行了,这个代码放进去会超时。