我寻思方法和题解也差不多啊@w@。
#include<iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int a[n+4][m+4]={0};
for(int i=2;i<=n+1;i++){
for(int j=2;j<=m+1;j++){
cin>>a[i][j];
a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
}
}
int c=1;
for(int y1=2;y1<=n+1;y1++){
for(int x1=2;x1<=m+1;x1++){
if(a[y1][x1]==1){
for(int len=1;a[y1+len][x1+len]-a[y1+len][x1-1]-a[y1-1][x1+len]+a[y1-1][x1-1]==(len+1)*(len+1)&&y1+len<=n+1&&x1+len<=m+1;len++){
c=max(c,len+1);
}
}
}
}
cout<<c;
}