DFS 90分 #7过不了
查看原帖
DFS 90分 #7过不了
739751
wangsijie0820楼主2023/9/28 20:11
#include <bits/stdc++.h>
using namespace std;

int d[4][2] = {{0,1},{1,0},{0,-1},{-1,0}},flag;
char a[105][105],n,m;
void dfs(int x,int y) {
    if (x == n && y == m) {
        cout << "Yes";
        exit(0);
    }
    
    for (int i = 0;i < 4;i++) {
        int nx = x + d[i][0],ny = y + d[i][1];
        if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && a[nx][ny] == '.') {
            a[nx][ny] = '#';
            dfs(nx,ny);
        }
    }
}

int main(){
    cin >> n >> m;
    memset(a,'#',sizeof(a));
    for (int i = 1;i <= n;i++) {
        for (int j = 1;j <= m;j++) {
            cin >> a[i][j];
        }
    }
    
    dfs(1,1);
    
    if (!flag) cout << "No";
    else cout << "Yes";
    return 0;
}
2023/9/28 20:11
加载中...