这道题是算法书上的例子,就照办书上的算法了。求最大子矩阵和。
#include<stdio.h>
int a[102][102];
int b[102];
int max1(int n)
{
int sum,x,i;
sum=0,x=0;
for(i=0;i<n;i++)
{
if(x>0) x+=b[i];
else x=b[i];
if(x>sum) sum=x;
}
return sum;
}
int main()
{
int n,i,j,k,max,y;
scanf("%d",&n);
y=a[0][0];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[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]+=a[j][k];
max=max1(n);
if(max>y) y=max;
}
}
printf("%d",y);
return 0;
}