zoukankan      html  css  js  c++  java
  • UVA-10074 最大子矩阵 DP

    求出大矩阵里面全为0的最大子矩阵

    我自己用的个挫DP写的,感觉写的不是很好,其实可以再优化,DP想法就是以 0 0 到当前 i j 为整体矩阵考虑,当前 i j就是从 i-1 j或者 i,j-1那里最大化,然后因为要求最大子矩阵,还得自从j往上扫一遍。。总之好像有点挫

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    int dp[105][105][2];
    int s[105][105];
    int g[105][105];
    int n,m,i,j,k;
    int main()
    {
        while (scanf("%d%d",&n,&m))
        {
            if (n==0 && m==0) break;
            for (i=1;i<=n;i++)
            {
                for (j=1;j<=m;j++)
                {
                    scanf("%d",&g[i][j]);
                    s[i][j]=dp[i][j][0]=dp[i][j][1]=1-g[i][j];
                }
            }
            int ans=0;
            for (i=1;i<=n;i++)
            {
                for(j=1;j<=m;j++)
                {
                    if (j-1>=1 && !g[i][j] && !g[i][j-1])
                    {
                        dp[i][j][0]=max(dp[i][j-1][0]+1,dp[i][j][0]);
                        s[i][j]=max(s[i][j],dp[i][j][0]);
                    }
                    if (i-1>=1 && !g[i][j] && !g[i-1][j])
                    {
                        dp[i][j][1]=max(dp[i-1][j][1]+1,dp[i][j][1]);
                        s[i][j]=max(s[i][j],dp[i][j][1]);
                        int temp=dp[i][j][1];
                        temp--;
                        int cur=dp[i][j][0];
                        for (k=i-1;k>=1 && temp;k--,temp--)
                        {
                            cur=min(dp[k][j][0],cur);
                            s[i][j]=max(s[i][j],cur*(i-k+1));
                        }
                    }
                    ans=max(ans,s[i][j]);
                }
    
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    TinySpider开源喽
    TinyXmlParser开源喽
    Tiny快速入门之控制层开发
    TinyDBRouter
    TinyIOC
    开源前要做好哪些准备工作?
    分布式锁的简单实现
    TinyDBCluster Vs routing4db
    HTML5基础(五)
    HTML5基础(四)
  • 原文地址:https://www.cnblogs.com/kkrisen/p/3492466.html
Copyright © 2011-2022 走看看