uva 10074 Take the Land

来源:互联网 发布:历年人口普查数据 编辑:程序博客网 时间:2024/05/16 19:48

ps:博主为朱老师学生

这是一道和uva 108类似的题,值得注意的是最大空地初始为0

#include <cstdlib>#include <cstdio>#include <cstring>//#define Tint i,j,k,N,M;int Max;int p;int num1[200][200],num3[200][200];int temp[200];void inital(){    memset(num1,0,sizeof(num1));    memset(num3,0,sizeof(num3));    memset(temp,0,sizeof(temp));}int main(){#ifdef Tfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#endif // T    while(~scanf("%d %d",&N,&M)&&(N||M))    {        inital();        for(i = 1; i<=N; i++)        {            for(j=1; j<=M; j++)            {                scanf("%d",&num1[i][j]);                //num2[i][j]=num2[i-1][j] + num1[i][j];                num3[i][j]=num3[i][j-1] + num3[i-1][j] + num1[i][j] - num3[i-1][j-1];            }        }        Max=0;        for(i = 1; i <= N; i++)        {            for(k=0; k<i; k++)            {                p = 0;                for(j = 1; j<=M; j++)                {                    if(p==0)                    {                        temp[j] = num3[i][j] - num3[k][j];                        if(temp[j] - temp[j-1])                            p = 0;                        else                        {                             p= p+i-k;                            if(p> Max)                            Max = p;                        }                    }                    else                    {                        temp[j] = num3[i][j] - num3[k][j];                        if(temp[j]-temp[j-1])                            p = 0;                        else                        {                             p= p+i-k;                            if(p> Max)                            Max = p;                        }                    }                }            }        }        printf("%d\n",Max);    }return 0;}

1 0
原创粉丝点击