您的位置:首页 > 其它

HDU 1081 最大子矩阵

2012-08-31 08:57 302 查看
#include <stdio.h>
#include <string.h>

int main()
{
const int size = 101;
int Max,sum;
int N,i,j,k,val,a[size][size];
while (scanf("%d",&N)!=EOF)
{
memset(a,0,sizeof(a));
Max = -128;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
{
scanf("%d",&val);
a[i][j]+=a[i][j-1]+val;//a[i][j]表示第i行前j个数之和
}
for(i=1;i<=N;i++)  //起始列
for (j=i;j<=N;j++)  //终止列
for(sum = 0,k=1;k<=N;k++) //对每一行进行搜索
{
//a[k][j]-a[k][i-1]表示第k行第j列与第i列之间的数
sum=(sum>0?sum:0)+a[k][j]-a[k][i-1];
if(sum>Max)
Max = sum;
}
printf("%d\n",Max);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: