• POJ 2955 Brackets(区间DP)


    嗯...

    题目链接:http://poj.org/problem?id=2955

    一道比较经典的区间dp,注意首先更新dp,然后再转移,转移的时候并没有什么代价,即dp[i][j] = max(dp[i][j], dp[i][k] + dp[k + 1][j]

    AC代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<algorithm>
     5 
     6 using namespace std;
     7 
     8 char s[105];
     9 int dp[1005][1005];
    10 
    11 inline bool judge(int x, int y){
    12     if(s[x] == '(' && s[y] == ')') return 1;
    13     if(s[x] == '[' && s[y] == ']') return 1;
    14     return 0;
    15 }//判断 
    16 
    17 int main(){
    18     while(~scanf("%s", s)){
    19         memset(dp, 0, sizeof(dp));
    20         if(s[0] == 'e') break;
    21         int len = strlen(s);
    22         for(int l = 1; l < len; l++){
    23             for(int i = 0; i < len; i++){
    24                 int j = i + l;
    25                 if(j > len) break;
    26                 if(judge(i, j)){
    27                     if(j - i == 1) dp[i][j] = 2;
    28                     else dp[i][j] = dp[i + 1][j - 1] + 2;
    29                 }//更新dp 
    30                 for(int k = i; k < j; k++){
    31                     dp[i][j] = max(dp[i][j], dp[i][k] + dp[k + 1][j]);
    32                 }//转移 
    33             }
    34         }
    35         printf("%d
    ", dp[0][len - 1]);
    36     }
    37     return 0;
    38 }
    AC代码
  • 相关阅读:
    (转)使用InfluxDB+cAdvisor+Grafana配置Docker监控
    Linux cut命令
    php 三种数组
    Linux httpd源码编译安装
    Linux yum如何下载rpm包到本地
    linux yum 工具
    windows phpstudy 本地添加自定义域名
    php.ini
    Linux rpm 查询
    linux rpm 安装和卸载
  • 原文地址:https://www.cnblogs.com/New-ljx/p/11569317.html
Copyright © 2020-2023  润新知