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