您的位置:首页 > 其它

hdu1081——To The Max

2010-08-31 14:35 232 查看
求最大子矩阵的和!和最长子序列和思想一样,不过,得将矩阵压缩!

#include<stdio.h>
#include<string.h>
#define max 110
int a[max][max];
int dp[max][max];
main()
{
int n,m;
int i,j,k;
int sum,zmax;
while(scanf("%d",&n)!=EOF)
{
memset(dp,0,sizeof(dp));
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
zmax=0;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
sum=0;
for(k=0;k<n;k++)
{
dp[j+1][k]=dp[j][k]+a[j][k];
sum+=(dp[j+1][k]-dp[i][k]);
if(sum>zmax)
zmax=sum;
if(sum<0)
sum=0;
}
}
}
printf("%d/n",zmax);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: