• poj2955_区间dp


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

    题目大意:括号匹配,(s)表示字符串s外有一对括号,它是合法的,那么他的最大个数就可以是 s包含的个数+2;ab是合法的,表示字符串ab的长度可以是a包含的个数+b包含的个数

    理解题意就简单多了

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cstdlib>
     6 #include <cmath>
     7 #include <set>
     8 #include <map>
     9 #include <vector>
    10 using namespace std;
    11 
    12 char a[110], b[5] = "end";
    13 int dp[110][110];
    14 int main()
    15 {    
    16     while(~scanf("%s", a))
    17     {        
    18         if(strcmp(a, b) == 0)
    19             break;
    20         memset(dp, 0, sizeof(dp));
    21         int len = strlen(a);
    22         for(int l = 1; l < len; l++)//表示长度
    23         {
    24             for(int i = 0, j = l; j < len; i++, j++)//i为起点,j为终点
    25             {
    26                 if(a[i] == '(' && a[j] == ')' || (a[i] == '[' && a[j] == ']'))
    27                     dp[i][j] = dp[i + 1][j - 1] + 2;
    28                 for(int k = i; k <= j; k++)//注意k从i开始,因为不算起点可能个数最大啊,终点也是也是一样哦(不过k<j也是可行的,自己想想吧)
    29                     dp[i][j] = max(dp[i][j], dp[i][k] + dp[k + 1][j]);
    30                // cout << i << " " << j << " " << dp[i][j] << endl;
    31             }
    32         }
    33         printf("%d
    ", dp[0][len - 1]);
    34     }
    35     return 0;
    36 }
  • 相关阅读:
    sublimeformaya
    sitecustomize.py 用法
    计蒜客之矩阵翻转
    计蒜客之判断质数
    计蒜客之斐波那契数列
    LTE 测试文档(翻译)
    Manual——Test (翻译1)
    LTE Manual ——Logging(翻译)
    嵌入式linux的学习之路[转]
    C语言预处理程序[转]
  • 原文地址:https://www.cnblogs.com/luomi/p/5536333.html
Copyright © 2020-2023  润新知