zoukankan      html  css  js  c++  java
  • 种草莓【字符串】【动态规划】

    http://acm.hnust.edu.cn/JudgeOnline/problem.php?cid=1436&pid=6

    求最大正方形边长。

    采用动态规划思想,若当前格满足要求,则dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1;

    但是直接按字符一个一个读入会超时(原因不懂。。。),每行按字符串读就不会了。。。。。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    int dp[2005][2005];
    char mp[2005][2005];
    char ss[2005];
    
    int Min(int a,int b,int c)
    {
        int ans=a;
        ans=min(ans,b);
        ans=min(ans,c);
        return ans;
    }
    
    int main()
    {
        int T,n;
        scanf("%d",&T);
        while(T--){
            scanf("%d",&n);
           memset(dp,0,sizeof(dp));
            for(int i=1;i<=n;i++){
                scanf("%s",ss);
                for(int j=0;j<n;j++){
                    mp[i][j+1]=ss[j];
                }
            }
            int ans=1;
            for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++){
                if(mp[i][j]=='E'){
                    dp[i][j]=Min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1;
                }
                ans=max(ans,dp[i][j]);
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    四十八.监控概述 、 Zabbix基础 、 Zabbix监控服务
    123D
    bzoj3879
    bzoj1699
    LA6878
    uoj#149
    687C
    codeforces round #424 div2
    803E
    713C
  • 原文地址:https://www.cnblogs.com/zxhyxiao/p/8023030.html
Copyright © 2011-2022 走看看