DFS就过了...似乎数据有待加强
  • 板块P1902 刺杀大使
  • 楼主yyccc
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/3 03:15
  • 上次更新2023/12/3 10:26:16
查看原帖
DFS就过了...似乎数据有待加强
403552
yyccc楼主2023/12/3 03:15

如题,本来还想着循序渐进先当走迷宫写个DFS,然后再试试加上二分答案,再试试BFS,结果DFS就AC了...

#include <iostream>
using namespace std;

const int MAXN = 1001;

int n, m;
int f[MAXN][MAXN];
int g[MAXN][MAXN];
int zl[4][2] = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} };

int dfs(int x, int y) {
    if (x == n - 1 && y == m - 1)    return 1;

    f[x][y] = 1;

    for (int i = 0; i < 4; i++) {
        int nx = x + zl[i][0];
        int ny = y + zl[i][1];

        if (nx >= 0 && nx < n && ny >= 0 && ny < m && f[nx][ny] == 0) 
            if (dfs(nx, ny) == 1)    return 1;
    }
    return 0;
}

int main() {
    cin >> n >> m;
    for (int i = 0; i < n; i++) 
        for (int j = 0; j < m; j++) 
            cin >> g[i][j];

    for (int k = 0;k < 1005;k++) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                f[i][j] = g[i][j] > k ? 1 : 0;
            }
        }
        if (dfs(0, 0)) {
            cout << k << endl;
            break;
        }
    }
    return 0;
}
2023/12/3 03:15
加载中...