zoukankan      html  css  js  c++  java
  • 最大1矩阵

    这个算是模板code,以hdu 1505为例题,完全可以将其转化为最大1矩阵问题

    #include <stdio.h>
    #include <iostream>
    using namespace std;
    const int N=1111;
    
    int a[N][N];
    int Run(const int &m, const int &n)
    {
        int maxx=0;int k;
        int col[N];
        for(int j=1;j<=n;j++)     //探测每列的最长1,遇0则止
        {
            if(a[1][j]==0) col[j]=0;
            else
            {
                for(k=2;k<=m&&a[k][j]==1;++k);
                col[j]=k-1;
            }
        }
        for(int i=1;i<=m;i++)
        {
         if(i>1)
         {
             for(int j=1;j<=n;j++)
             {
                 if(a[i][j]==0) col[j]=0;      //倘此处为0,则截至
                 else
                 {
                     if(a[i-1][j]==0)         //上一处为0,则再跑一次探测(探测最长1)
                     {
                         for(k=i+1;k<=m&&a[k][j]==1;++k);
                         col[j]=k-1;
                     }
                 }
             }
         }
         for(int j=1;j<=n;j++)
         {
             if(col[j]>=i)         //y坐标向下的最长延伸
             {
                 int l,r;         //凡y坐标向下延伸大于等于第j列的都可以
                 for(l=j-1;l>=1&&col[l]>=col[j];--l);l++;  //向左找
                 for(r=j+1;j<=n&&col[r]>=col[j];++r);r--;  //向右找
                 int res=(r-l+1)*(col[j]-i+1);             //形成了一个矩阵,不要忘了加上自身
                 maxx=max(res,maxx);                  
             }
         }
        }
        return maxx;
    }
    
    
    int main()
    {
        int T;
        for(scanf("%d",&T); T; T--)
        {
            int m,n;
            char ch;
            scanf("%d%d",&m,&n);
            for(int i=1; i<=m; i++)
            {
                for(int j=1;j<=n;j++)
                {
                    cin>>ch;
                    if(ch=='R') a[i][j]=0;
                    else        a[i][j]=1;
                }
            }
            int ans=Run(m,n);
            printf("%d
    ",ans*3);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    浅谈设计和编码
    谈谈分工
    我们需要专职的QA吗?
    几句禅语的解释
    理想的程序员
    表连接
    关于集群和分布式的好文
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & ManacherC
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher B
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher A
  • 原文地址:https://www.cnblogs.com/zsyacm666666/p/5303009.html
Copyright © 2011-2022 走看看