50分求调
查看原帖
50分求调
1388262
lianghuahua楼主2025/7/22 18:50
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int n, m, a[N][N];
bool check1(int x, int y, int k){
    for(int i = 1; i <= k; i++){
    	for(int j = 1; j <= k; j++){
    		if((i == j && a[x + i - 1][y + j - 1] != 1) || (i != j && a[x + i - 1][y + j - 1] != 0)){
    			return false;
			}
		}
	}
	return true;
}
bool check2(int x, int y, int k){
	for(int i = 1; i <= k; i++){
		for(int j = 1; j <= k; j++){
			if((i + j == k - 1 && a[x + i - 1][y + j - 1] != 1) || (i + j != k - 1 && a[x + i - 1][y + j - 1] != 0)){
				return false;
			}
		}
	}
    return true;
}
int main(){
    cin >> n >> m;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++){
			cin >> a[i][j];
		}
	}
	for(int k = min(n, m); k >= 1; k--){
		for(int i = 1; i + k - 1 <= n; i++){
			for(int j = 1; j + k - 1 <= m; j++){
				if(check1(i, j, k) || check2(i, j, k)){
					cout << k;
					return 0;
				}
			}
		}
	}
	cout << 0;
	return 0;
}
2025/7/22 18:50
加载中...