社区讨论
站外题求助(也不算?)
学术版参与者 3已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @lo2jywqu
- 此快照首次捕获于
- 2023/10/23 15:04 2 年前
- 此快照最后确认于
- 2023/10/23 15:04 2 年前
题目描述
当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。 假设你已经得到了一个n*m的迷宫的图纸,请你判断是否可以走出迷宫。
输入描述
第一行是两个整数n和m(1<=n,m<=50),表示迷宫的行数和列数。
接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符'.'表示空地,'#'表示墙,'S'表示起点,'T'表示出口。
输出描述
如果能走出迷宫输出Yes,否则输出No。
样例1
输入
3 3
S#T
.#.
...
输出
Yes
蒟蒻代码:```
C#include<bits/stdc++.h>
using namespace std;
int n, m;
char a[1005][1005];
char sx = 'S', sy = 0, ex = 'T', ey = 0;
bool flag;
int dx[4] = {-1, 0, 0, 1}, dy[4] = {0, -1, 1, 0};
void dfs(int x, int y){
a[x][y] = 1;
if(x == ex && y == ey){
flag = 1;
return;
}
for(int i = 0; i < 4; i++){
int nx = x + dx[i], ny = y + dy[i];
if(nx >= 1 && nx <= n && ny >= 1 && ny <=m && a[nx][ny] == '.' || 'T')dfs(nx, ny);
if(flag)return;
}
}
int main(){
cin >> n >> m;getchar();
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++){
cin >> a[i][j];getchar();
}
sx = 0, sy = 0, ex = 0, ey = 0;
dfs(sx, sy);
if(flag == 1){
cout << "Yes";
}
else{
cout << "No";
}
return 0;
}
回复
共 10 条回复,欢迎继续交流。
正在加载回复...