最大区间和
题意:给你一个n*n的矩阵,找出最大和子矩阵
把该行下面的每一行加到该行,每加一次,找一次。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define maxn 110
using namespace std;
int mp[maxn][maxn];
int maxi,ans,n;
void fact(int *a)
{
ans=0;
for(int i=0;i<n;i++)
{
ans=max(ans,0)+a[i];
maxi=max(ans,maxi);
}
}
int main()
{
while(~scanf("%d",&n))
{
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
scanf("%d",&mp[i][j]);
maxi=0,ans=0;
fact(mp[0]);
for(int z=0; z<n; z++)
{
for(int i=z+1; i<n; i++)
{
for(int j=0; j<n; j++)
{
mp[z][j]+=mp[i][j];
}
fact(mp[z]);
}
}
fact(mp[n-1]);
printf("%d\n",maxi);
}
return 0;
}