题意:给你一串()[]括号,要你求出这串括号的最大匹配个数。如'('与')'匹配,为2个,'['与']'匹配,为2个

思路:区间dp

状态方程:

if(s[i]=='('&&s[j]==')'||s[i]=='['&&s[j]==']')dp[i][j]=dp[i+1][j-1]+2;
dp[i][j]=max{dp[i][k]+dp[k+1][j]};(k>i&&k<j)
代码:(g++)
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stdlib.h>
#include <string.h>
#include <iomanip>
#define N 10005<<1
#define INF 10000000
#define LL long long
#define eps 10E-9
#define mem(a)  memset(a,0,sizeof(a))
#define mem1(a)  memset(a,-1,sizeof(a))
#define w(a)   while(a)
#define s(a)   scanf("%d",&a)
#define ss(a,b)   scanf("%d%d",&a,&b)
#define sss(a,b,c)   scanf("%d%d%d",&a,&b,&c)
#define PI acos(-1.0)
using namespace std;
int dp[101][101];
int main(){string s;w(cin>>s){mem(dp);if(s[0] == 'e') break;int len = s.length();for(int i=1; i<len; i++){for(int j=0,k=i; k<len; j++,k++){if(s[j] == '('&& s[k] == ')' || s[j] == '[' && s[k] == ']') dp[j][k] = dp[j+1][k-1] + 2;for(int l=j; l<k ; l++) dp[j][k] = max(dp[j][k], dp[j][l] + dp[l+1][k]);}}cout<<dp[0][len-1]<<endl;}return 0;
}

转载于:https://www.cnblogs.com/llguanli/p/8510516.html

poj 2955 区间dp相关推荐

  1. POJ 2955 (区间DP)

    题目链接: http://poj.org/problem?id=2955 题目大意:括号匹配.对称的括号匹配数量+2.问最大匹配数. 解题思路: 看起来像个区间问题. DP边界:无.区间间隔为0时,默 ...

  2. POJ 2955 区间DP必看的括号匹配问题,经典例题

    Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14226 Accepted: 7476 Description ...

  3. poj 1141(区间dp+打印路径)

    题意: 定义合法的括号序列如下: 1 空序列是一个合法的序列 2 如果S是合法的序列,则(S)和[S]也是合法的序列 3 如果A和B是合法的序列,则AB也是合法的序列 例如:下面的都是合法的括号序列 ...

  4. F - 你这是第一次让我看到落泪了呢 POJ - 3661Running 区间DP

    F - 你这是第一次让我看到落泪了呢 POJ - 3661 The cows are trying to become better athletes, so Bessie is running on ...

  5. poj 1651区间dp

    poj 1651 题意:给出一个序列,要求取走序列中出首尾之外的数字,问最小花费.取走第k个的花费a[k-1]*a[k]*a[k+1]. //#include<bits/stdc++.h> ...

  6. poj 3280 区间dp

    poj 3280 题意:输入一个含n个字母的长度为m的字符串,接下来输入n个字母,每个字母后面两个整数,分别表示删掉这个字母的代价,和添加这个字母的代价,求把该字符串变成回文串的最小代价. //#in ...

  7. POJ 2955 Brackets (区间DP)

    题目链接:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  8. POJ - 2955 Brackets (区间DP)

    题目: 给出一个有括号的字符串,问这个字符串中能匹配的最长的子串的长度. 思路: 区间DP,首先枚举区间长度,然后在每一个长度中通过枚举这个区间的分割点来更新这个区间的最优解.还是做的少. 代码: / ...

  9. Brackets POJ - 2955 (区间DP+最大括号匹配子序列)

    传送门 题目:给一个长度n(<=100)的只包含'[',']','(',)'的字符串,求最长的完全匹配的子序列.输出长度 题解:区间dp,dp[i][j]表示i~j的最长匹配数,一支dp[i][ ...

最新文章

  1. 解释为什么用梯度下降而不是直接求导数为0的解
  2. 12、java中的I/O流(2)
  3. java面试题35 给定以下JAVA代码,这段代码运行后输出的结果是()
  4. oracle dw报告,讲解Oracle数据库的全文索引设置步骤
  5. 2021-2025年中国再生聚酯行业市场供需与战略研究报告
  6. 莫言汕大致辞:马云、盖茨毕业之初都没什么了不起
  7. iOS 9.0系统策略更新
  8. pso-svm 算法实现(1):python DEAP
  9. Linux 安装 MySQL 以及 一些常见问题解决方案
  10. plsql 误删除了存储过程怎么处理_照片恢复 - 内存卡及手机误删照片怎么恢复?...
  11. arduino的串口缓冲区_C#无法从串口Arduino读取完整缓冲区
  12. c语言写马达驱动程序,如何用单片机驱动马达
  13. 史上最暴强老纳和师太-----全集!
  14. linux捕获鼠标点击事件文件,Linux捕捉鼠标事件和键盘事件的方法
  15. Tableau:树状图
  16. 梦境历险记-解说动漫电影
  17. [引擎搭建记录] 时间性抗锯齿(TAA)
  18. 【转】osworkflow教程
  19. 武汉理工大学c语言pta选择题答案,武汉理工大学c语言实验及答案.doc
  20. 企业网盘的优势到底在哪里?

热门文章

  1. npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
  2. leaflet添加marker出现偏移,修正方法-icon
  3. 拯救者Y9000P 加装固态
  4. Google地图位置服务Latitude登录Orkut (查看朋友的地理位置)
  5. 夕阳红旅游团需求规格说明书
  6. LWN:5.18 合并窗口,第二部分!
  7. RL——Policy Gradient类方法
  8. 讨厌程序员_我是程序员但讨厌编程
  9. 2022“杭电杯”中国大学生算法设计超级联赛(7)1004 Triangle Game
  10. achb的c语言题目,C语言程序设题目及解答-09.doc