求解求解为什么只有20分,但是我自己测试都是对的
查看原帖
求解求解为什么只有20分,但是我自己测试都是对的
538273
lt1526679338楼主2023/11/22 01:22
#include<iostream>
using namespace std;
int n, m, a[101][101],b[101][101], ans;//b储存以b[i][j]为右下角顶点的正方形的边长,ans为最大边长
int min(int a, int b) {
	return a <= b ? a : b;
}
int max(int a, int b) {
	return a >= b ? a : b;
}
int main() {
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> a[i][j];
			if (a[i][j] == 1) {
				b[i][j] = min(min(a[i - 1][j], a[i][j - 1]), a[i - 1][j - 1])+1;
			}
			ans = max(ans, b[i][j]);
		}
	}
	cout << ans << endl;
	return 0;
}

2023/11/22 01:22
加载中...