poj 1050 To the Max
这道题用到的是最大连续和 扩展到二维 开始时没想到是最大连续和
#include<stdio.h>
#include<string.h>
int a[101][101],n,temp[101];
int solve()//最大子序列和函数
{
int i,sum=0,max=0;
for(i=0;i<n;i++)
{
sum+=temp[i];
if(sum<0)sum=0;
if(sum>max)max=sum;
}
return max;
}
int main()
{
int i,j,k,max;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
max=0;
for(i=0;i<n;i++)//逐行枚举
{
memset(temp,0,sizeof(temp));
for(j=i;j<n;j++) //j表示行 可以覆盖全部行
{
for(k=0;k<n;k++) //k表示列
{
temp[k]+=a[j][k];
}
if(max<solve())max=solve();
}
}
printf("%d\n",max);
}
return 0;
}