30分O.o
查看原帖
30分O.o
1471385
ZeyLam楼主2025/1/26 20:39

我寻思方法和题解也差不多啊@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];
		}
	}
	/*for(int i=2;i<=n+1;i++){
		cout<<endl;
		for(int j=2;j<=m+1;j++){
			cout<<a[i][j]<<' ';
		}
	}*/
	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;
}
2025/1/26 20:39
加载中...