- 注意多个测试用例,和poj不一样
- 注意输出用例结果之间要换行
代码如下:
#include
int rect[101][101];
int a[101], dp[101];
int n, mx;
int main() {
while (scanf("%d", &n) != EOF) {
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
scanf("%d", &rect[i][j]);
mx = -200000000;
for (int i = 1; i <= n; ++i)
for (int j = i; j <= n; ++j) {
for (int k = 1; k <= n; ++k) {
a[k] = 0;
for (int m = i; m <= j; ++m) {
a[k] += rect[m][k];
}
}
dp[0] = 0;
for (int k = 1; k <= n; ++k) {
if (a[k] > dp[k - 1] + a[k])
dp[k] = a[k];
else
dp[k] = dp[k - 1] + a[k];
if (dp[k] > mx)
mx = dp[k];
}
}
printf("%d\n", mx);
}
return 0;
}