题意:
求一个最大子矩阵和。
思路:
枚举行区间,然后求一个最大子序列和。
贴一发挫code…
#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
typedef __int64 LL;
const int N=1e2+10;
int a[N][N];
int dp[N];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
int ans;
ans=a[1][1];
for(int k=1;k<=n;k++)
{
for(int i=k;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==k)
dp[j]=a[i][j];
else
dp[j]+=a[i][j];
}
int tmax=0;
for(int j=1;j<=n;j++)
{
if(tmax>0)
tmax+=dp[j];
else
tmax=dp[j];
if(tmax>ans)
ans=tmax;
}
}
}
printf("%d
",ans);
return 0;
}
/*
4
0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2
*/