lzsyxxyjlyjl @ 2016-10-24 16:36:21
如果a[i][j]=0,用x来存储向左0的个数,用y来存储向上0的个数;如等于1,则用num来存储以这一个点为右下角的满足条件的正方形矩阵对角线长度
f[i][j].num = min3(f[i][j-1].x,f[i-1][j].y,f[i-1][j-1].num) +1;
#include<iostream>
#include<cstdio>
#define min3(a,b,c) min(a,min(b,c))
using namespace std;
int n,m,a[2501][2501],ans=0;
struct node {
int x,y,num;
} f[2501][2501];
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 i=1; i<=n; i++)
for (int j=1; j<=m; j++)
if (!a[i][j]) {
f[i][j].x = f[i][j-1].x + 1;
f[i][j].y = f[i-1][j].y + 1;
}
else {
f[i][j].num = min3(f[i][j-1].x,f[i-1][j].y,f[i-1][j-1].num) +1;
ans = max(ans,f[i][j].num);
}
cout << ans << endl;
return 0;
}
by 耗纸大大 @ 2016-11-17 11:41:41
没判断其他是否没鱼,看题目,要求的需要周围没有鱼才可以。。。
by wwvwwei @ 2017-03-26 10:40:37
@耗纸大大 不是这个原因..人家判断了 是要搜两条对角线 他只搜了一条......