ans

x-wangziji 2022-05-04 11:36:11 23 返回题目

#include <bits/stdc++.h>
using namespace std;
int m, n;
char g[20][20];
int dx[4] = { 0, 0, 1, -1 };
int dy[4] = { 1, -1, 0, 0 };
bool vis[20][20];

void dfs(int x, int y) {
    if (vis[n][n])
        return;
    for (int i = 0; i < 4; i++) {
        int nx = x + dx[i];
        int ny = y + dy[i];
        if (nx < 1 || nx > n || ny < 1 || ny > n)
            continue;
        if (g[nx][ny] == '#')
            continue;
        if (vis[nx][ny])
            continue;
        vis[nx][ny] = true;
        dfs(nx, ny);
    }
}

int main() {
    cin >> m;
    cin >> n;
    while (m--) {
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++) cin >> g[i][j];
        memset(vis, false, sizeof(vis));
        vis[1][1] = true;
        dfs(1, 1);
        if (vis[n][n])
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
        return 0;
    }
}
{{ vote && vote.total.up }}