UVa:836 Largest Submatrix

来源:互联网 发布:html5音乐网站源码 编辑:程序博客网 时间:2024/04/27 17:05

1Y。

和上一道10074基本是一样的题。只不过要用字符来读。

 

 

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;bool a[105][105],me[105][105][105];int s[105][105];int main(){    int T;    scanf("%d",&T);    getchar();    getchar();    while(T--)    {        memset(s,0,sizeof(s));        memset(a,0,sizeof(a));        memset(me,0,sizeof(me));        string str;        int W=0,N=0;        while(getline(cin,str)&&!str.empty())        {            W++;            N=str.size();            for(int i=0; i<N; ++i)            {                if(str[i]=='1')                {                    a[W][i+1]=false;                    s[W][i+1]=s[W][i]+1;                }                else if(str[i]=='0')                {                    a[W][i+1]=true;                    s[W][i+1]=0;                }            }        }        for(int i=1; i<=W; ++i)            for(int j=1; j<=N; ++j)            {                bool ok=false;                for(int k=j; k<=N; ++k)                {                    if(a[i][k]==true) ok=true;                    me[i][j][k]=ok;                }            }        int mx=0;        for(int i=1; i<=N; ++i)            for(int j=i; j<=N; ++j)            {                int ans=0;                for(int k=1; k<=W; ++k)                {                    if(me[k][i][j]==true)                    {                        ans=0;                        continue;                    }                    int res=s[k][j]-s[k][i-1];                    ans+=res;                    mx=max(ans,mx);                }            }        printf("%d\n",mx);        if(T)printf("\n");    }    return 0;}