列表

详情


NC14572. 走出迷宫

描述

小明现在在玩一个游戏,游戏来到了教学关卡,迷宫是一个N*M的矩阵。
小明的起点在地图中用“S”来表示,终点用“E”来表示,障碍物用“#”来表示,空地用“.”来表示。
障碍物不能通过。小明如果现在在点(x,y)处,那么下一步只能走到相邻的四个格子中的某一个:(x+1,y),(x-1,y),(x,y+1),(x,y-1);
小明想要知道,现在他能否从起点走到终点。

输入描述

本题包含多组数据。
每组数据先输入两个数字N,M
接下来N行,每行M个字符,表示地图的状态。
数据范围:
2<=N,M<=500
保证有一个起点S,同时保证有一个终点E.

输出描述

每组数据输出一行,如果小明能够从起点走到终点,那么输出Yes,否则输出No

示例1

输入:

3 3
S..
..E
...
3 3
S##
###
##E

输出:

Yes
No

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 142ms, 内存消耗: 664K, 提交时间: 2022-06-06 09:19:50

#include<bits/stdc++.h>
using namespace std;
char a[500][500];
int n,m;
bool c=0;
void dfs(int x,int y)
{
	if(x>n||y>m) return;
	if(a[x][y]=='#') return;
	if(a[x][y]=='E') 
	{
		c=1;
		return;
	}
	dfs(x+1,y);
	dfs(x,y+1);
}
int main(){
	while(cin>>n>>m)
	{
		memset(a,0,sizeof(a));
		c=0;
		for(int i=0;i<n;i++){
			cin>>a[i];
		}
		dfs(0,0);
		if(c){
			cout<<"Yes"<<endl;
		}
		else cout<<"No"<<endl;
	}
}

上一题