为什么30
查看原帖
为什么30
945742
hexuchen楼主2024/10/1 17:49

rt

#include <bits/stdc++.h>
using namespace std;
int n,m,s[101][101],a[101][101],ans=-1e9;
int main(){
	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]+a[i][j]-s[i-1][j-1];	
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			int maxk=min(n-i,n-j);
			for(int k=0;k<=maxk;k++){
				int x=i+k,y=j+k;
				if((s[x][y]-s[i-1][y]-s[x][j-1]+s[i-1][j-1])==(maxk*maxk)){
					ans=max(ans,maxk);
				}
			}
		}
	}
	cout<<ans;
	return 0;
}
/*
0 1 1 1
1 1 1 0
0 1 1 0
1 1 0 1
*/
2024/10/1 17:49
加载中...