这道题用暴力就是前缀和,四层for循环,我们这里用另外一种压缩矩阵的方法做.~emmm思路就不写了,有疑问看看dalao的博客
#include <iostream>
#include <cstring>
using namespace std;
#define Max 130
int a[Max][Max];
int b[Max];
int dp[Max];
int M=-9999;
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i++)
{
for (int j = i; j <= n; j++)
{
memset(b,0, sizeof(b));
memset(dp,0,sizeof(dp));
for (int p = 1; p <= n; p++)
{
for (int k = i; k <= j; k++)
{
b[p]+=a[k][p];
}
dp[p]=max(b[p],b[p]+dp[p-1]);
M=max(M,dp[p]);
}
}
}
cout<<M<<endl;
return 0;
}