求助一个关于if的问题

P1434 [SHOI2002] 滑雪

AutomatiC__ @ 2021-04-14 18:45:18

为什么dfs函数里

for (int i = 0; i < 4; i++) {
        int tx = x + dx[i];
        int ty = y + dy[i];
        if (in(tx, ty) && g[x][y] > g[tx][ty]) {
            dfs(tx, ty);
            f[x][y] = max(f[x][y], f[tx][ty] + 1);
        }
    }

这么写会AC

但是

for (int i = 0; i < 4; i++) {
        int tx = x + dx[i];
        int ty = y + dy[i];
        if (!in(tx, ty) || g[tx][ty] > g[x][y]) continue;
        dfs(tx, ty);
        f[x][y] = max(f[x][y], f[tx][ty] + 1);
    }

这么写会WA

这两种写法不是等价的吗?/yiw


by Terraria @ 2021-04-14 18:48:05

@AutomatiC__ g[tx][ty] > g[x][y] 中间应该有等号(吧)。


by 10circle @ 2021-04-14 18:48:19

g[tx][ty] > g[x][y]表示相等也可以继续,但是题意不是这样的


by AutomatiC__ @ 2021-04-14 19:18:13

噢噢确实,谢谢各位qwq


|