30分 Q.O
查看原帖
30分 Q.O
1471385
ZeyLam楼主2025/1/24 20:10
#include<iostream>
using namespace std;
int main(){
	int n,m;
	cin>>n>>m;
	int a[n+2][m+2]={0};
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			if(i==1&&j==1) a[i][j]=a[i][j];
			if(i==1&&j>1) a[i][j]=a[i][j]+a[i][j-1];
			if(i>1&&j==1) a[i][j]=a[i][j]+a[i-1][j];
			if(i>1&&j>1) a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
		}
	}
	/*for(int i=1;i<=n;i++){
		cout<<endl;
		for(int j=1;j<=m;j++){
			cout<<a[i][j]<<' ';
		}
	}*/
	int c=1;
	for(int y1=1;y1<=n;y1++){
		for(int x1=1;x1<=m;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);len++) c=max(c,len+1);
		}
	}
	cout<<c;
}
2025/1/24 20:10
加载中...