站外题求助(也不算?)
  • 板块学术版
  • 楼主封禁用户
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/5/21 20:19
  • 上次更新2023/10/23 15:04:55
查看原帖
站外题求助(也不算?)
751447
封禁用户楼主2023/5/21 20:19

题目描述

当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。 假设你已经得到了一个n*m的迷宫的图纸,请你判断是否可以走出迷宫。

输入描述 第一行是两个整数n和m(1<=n,m<=50),表示迷宫的行数和列数。 接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符'.'表示空地,'#'表示墙,'S'表示起点,'T'表示出口。

输出描述 如果能走出迷宫输出Yes,否则输出No。

样例1 输入

3 3

S#T

.#.

...

输出 Yes

蒟蒻代码:```

#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;
}
2023/5/21 20:19
加载中...