社区讨论
90pts,把所有的问题都找过了
P7074[CSP-J 2020] 方格取数参与者 3已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @m1usgtjf
- 此快照首次捕获于
- 2024/10/04 21:56 去年
- 此快照最后确认于
- 2025/11/04 18:03 4 个月前
rt,正在备战CSP-J第二轮的我正在拼命训练
CPP#include <bits/stdc++.h>
#define INF 100000000000000000
using namespace std;
const int N = 1005;
int n, m;
long long a[N][N], dp[N][N][3];
int dfs(int x, int y, int z) {
if (x > n || y > m || x < 1) return -INF;
if (dp[x][y][z] != -INF) return dp[x][y][z];
if (x == n && y == m) return dp[x][y][z] = a[n][m];
if (z == 1) return dp[x][y][z] = max(dfs(x + 1, y, 1), dfs(x, y + 1, 0)) + a[x][y];
if (z == 2) return dp[x][y][z] = max(dfs(x - 1, y, 2), dfs(x, y + 1, 0)) + a[x][y];
return dp[x][y][z] = max({dfs(x + 1, y, 1), dfs(x - 1, y, 2), dfs(x, y + 1, 0)}) + a[x][y];
}
int main() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
scanf("%lld", &a[i][j]), dp[i][j][0] = dp[i][j][1] = dp[i][j][2] = -INF;
printf("%lld\n", dfs(1, 1, 0));
/*
for (int k = 0; k < 3; ++k, puts(""))
for (int i = 1; i <= n; ++i, puts(""))
for (int j = 1; j <= m; ++j)
printf("%d ", dp[i][j][k]);
*/
return 0;
}
有两个点WA了
回复
共 7 条回复,欢迎继续交流。
正在加载回复...