社区讨论
WA 42pts求调必关
P1004[NOIP 2000 提高组] 方格取数参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m2fqn18n
- 此快照首次捕获于
- 2024/10/19 13:48 去年
- 此快照最后确认于
- 2025/11/04 16:51 4 个月前
rt
CPP#include<bits/stdc++.h>
using namespace std;
int n;
int a[10][10];
int dp[10][10][10];
int main() {
memset(dp,-1,sizeof(dp));
memset(a,0,sizeof(a));
cin >> n;
int x, y, z;
while (1) {
cin >> x >> y >> z;
if (x == 0 and y == 0 and z == 0) break;
a[x][y] = z;
}
dp[1][1][1] = a[1][1];
for (int k = 2; k <= 2 * n - 1; k++) {
for (int x1 = 1; x1 <= n; x1++) {
for (int x2 = 1; x2 <= n; x2++) {
int y1 = k - x1;
int y2 = k - x2;
int cur=dp[x1][y1][x2];
if (y1<1 or y1>n or y2<1 or y2>n) continue;
dp[x1][y1][x2] = -1;
if (x1 > 1 && x2 > 1)
cur = max(cur, dp[x1 - 1][y1][x2 - 1]);
if (x1 > 1 && y2 > 1)
cur = max(cur, dp[x1 - 1][y1][x2]);
if (y1 > 1 && x2 > 1)
cur = max(cur, dp[x1][y1 - 1][x2 - 1]);
if (y1 > 1 && y2 > 1)
cur = max(cur, dp[x1][y1 - 1][x2]);
if (x1 == x2 && y1 == y2)
cur += a[x1][y1];
else
cur += a[x1][y1] + a[x2][y2];
dp[x1][y1][x2]=cur;
}
}
}
cout << dp[n][n-1][n] << endl;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...