最大子矩阵
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[110][110]={0};
int b[110][110]={0};
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
if(i==1&&j==1)
{
b[i][j]=b[i][j-1]+a[i][j];
}
else
{
b[i][j]=b[i][j-1]+b[i-1][j]+a[i][j]-b[i-1][j-1];
}
}
}
int cnt=0;
int ma=-1;
for(int i=1;i<=n-1;i++)
{
for(int j=1;j<=n-1;j++)
{
for(int x=i+1;x<=n;x++)
{
for(int y=j+1;y<=n;y++)
{
if(i==1&&j==1)
{
cnt=b[x][y];
}
else if(i!=1&&j==1)
{
cnt=b[x][y]-b[i-1][y];
}
else if(i==1&&j!=1)
{
cnt=b[x][y]-b[x][j-1];
}
else if(i!=1&&j!=1)
{
cnt=b[x][y]-b[x][j-1]-b[x][j-1]+b[i-1][j-1];
}
ma=max(cnt,ma);
}
}
}
}
cout<<ma;
return 0;
}