请教,50分思路哪里有错QAQ

P1736 创意吃鱼法

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

@耗纸大大 不是这个原因..人家判断了 是要搜两条对角线 他只搜了一条......


|