您的位置:首页 > 其它

UVA 108 Maximum Sum

2013-11-22 13:12 441 查看
最大子矩阵和,转化为一维最大字串和解决

#include <stdio.h>
#include <memory.h>
int n;
int data[120][120];
int column_sum[120];
int max_sum[120];
void set_column_sum(int r1, int r2) {
memset(column_sum,0,sizeof(column_sum));
int i,j;
for (i=0;i<n;i++) {
for (j=r1;j<=r2;j++)
column_sum[i]+=data[j][i];
}
}
int get_maxcolumn_sum() {
int r=column_sum[0];
max_sum[0]=r;
int i;
for (i=1;i<n;i++) {
if (max_sum[i-1]>0)
max_sum[i]=max_sum[i-1]+column_sum[i];
else
max_sum[i]=column_sum[i];
if (max_sum[i]>r)
r=max_sum[i];
}
return r;
}
int main() {
int i,j;
int ans;
int tmp;
while (scanf("%d",&n)!=EOF) {
for (i=0;i<n;i++) {
for (j=0;j<n;j++)
scanf("%d",&data[i][j]);
}
ans=0;
for (i=0;i<n;i++) {
for (j=i;j<n;j++) {
set_column_sum(i,j);
tmp=get_maxcolumn_sum();
if (tmp>ans)
ans=tmp;
}
}
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: