2013年9月22日 星期日

TIOJ 1063 最大矩形(Area)

[動態規劃]
O(N^3) ㄎㄎ 對動態規劃越來越熟了~XDD




#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n,m;
    bool sq1[201][201];
    int prc[201][201];
    int lx,ly;
    scanf("%d %d",&n,&m);
    for(lx=1;lx<=n;lx++)
        for(ly=1;ly<=m;ly++)
            scanf("%d",&sq1[lx][ly]);
    for(lx=0;lx<=n;lx++)
        prc[lx][0]=0;
    for(ly=0;ly<=m;ly++)
        prc[0][ly]=0;
    for(lx=1;lx<=n;lx++)
        for(ly=1;ly<=m;ly++)
            prc[lx][ly]=sq1[lx][ly]*(prc[lx][ly-1]+1);
    int max=0;
    for(ly=1;ly<=m;ly++)
    {
        for(lx=1;lx<=n;lx++)
        {
            if(sq1[lx][ly])
            {
                int lk=lx;
                while(prc[lk][ly]>=prc[lx][ly])
                    lk--;
                max=(max>(lx-lk)*(prc[lx][ly]))? max:(lx-lk)*(prc[lx][ly]);
            }
        }
    }
    printf("%d\n",max);
    return 0;
}

沒有留言:

張貼留言