调好必关!
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,a[2005][2005],s[2005][2005],Max=-100000000,m,x,y;
signed main() {
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
cin>>n>>m;
for (int i=1; i<=n; i++) {
for (int j=1; j<=m; j++) {
cin>>a[i][j];
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
}
}
for(int k=1; k<=min(n,m); k++) {
for (int i=1; i<=n; i++) {
for (int j=1; j<=m; j++) {
if(k<=i&&k<=j) {
if(Max<=s[i][j]-s[i-k][j]-s[i][j-k]+s[i-k][j-k]) {
bool f1=true,f2=true;
for(int x=i,y=j;x>=i-k+1,y>=j-k+1;x--,y--){
if (a[x][y]==0){
f1=false;
break;
}
}
for(int x=i-k+1,y=j;x<=i,y>=j-k+1;x++,y--){
if (a[x][y]==0){
f2=false;
break;
}
}
if (f1||f2){
Max=s[i][j]-s[i-k][j]-s[i][j-k]+s[i-k][j-k];
}
}
}
}
}
}
cout<<Max;
return 0;
}
马蜂恐怖,见谅