最大子矩阵
枚举每种子矩阵情况,然后就是一个一维dp了
#include <iostream>
#include <stdio.h>
#include <limits>
using namespace std;
const int INF=numeric_limits<int>::min();
int array[101][101];
int aa[101];
int main()
{
int t;
while (scanf("%d",&t)!=EOF)
{
for (int i=0; i<t; ++i)
{
for (int j=0; j<t; ++j)
scanf("%d",&array[i][j]) ;
}
int maxsum=INF;
int sum=0;
for (int i=0; i<t; ++i)
{
memset (aa,0,sizeof(aa));
for (int k=i; k<t; ++k)
{sum=0;
for (int j=0; j<t; ++j)
aa[j]+=array[k][j];
for (int i=0; i<t; ++i)
{
sum+=aa[i];
if (sum>maxsum)
maxsum=sum;
if (sum<0)
sum=0;
}
}
}
cout<<maxsum<<endl;
}
}