您的位置:首页 > 其它

HDU 1081

2012-10-08 20:42 197 查看
Two-dimensional maximum sum, only from one-dimensional changing

#include <stdio.h>
#include <iostream>
#include <string.h>

using namespace std;

#define LEN 110
#define MMAX(a,b) ((a)>(b)?a:b)

int map[LEN][LEN];
int b[LEN];

int dp(int n) {
int i, j;
int retval = 0;
int tmp = 0;
for(i = 0; i < n; i++) {
tmp += b[i];
if(tmp > retval) {
retval = tmp;
}
else if(tmp < 0) {
tmp = 0;
}
}
return retval;
}

int main() {
int n;
int i, j, k;
while(scanf("%d", &n) != EOF) {
int mmax = 0;
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) {
scanf("%d", &map[i][j]);
}
}
for(i = 0; i < n; i++) {
memset(b, 0,sizeof(b));
for(j = i; j < n; j++) {
for(k = 0; k < n; k++) {
b[k] += map[j][k];
}
mmax = MMAX(mmax, dp(n));
}
}
printf("%d\n", mmax);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: