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

题目大意:括号匹配。对称的括号匹配数量+2。问最大匹配数。

解题思路

看起来像个区间问题。

DP边界:无。区间间隔为0时,默认为memset为0即可。

对于dp[i][j],如果i和j匹配,不难有dp[i][j]=dp[i+1][j-1]+2.

然后枚举不属于两端的中点, dp[i][j]=max(dp[i][j],dp[i][k]+dp[k][j]),合并两个区间的结果。

#include "cstdio"
#include "string"
#include "cstring"
#include "iostream"
using namespace std;
bool check(char a,int b)
{if(a=='('&&b==')') return true;else if(a=='['&&b==']') return true;else return false;
}
int dp[105][105];
int main()
{//freopen("in.txt","r",stdin);string str;while(cin>>str&&str!="end"){int n=str.size();for(int p=1;p<n;p++){for(int i=0;i<n-p;i++){int j=i+p;if(check(str[i],str[j])) dp[i][j]=dp[i+1][j-1]+2;for(int k=i+1;k<j;k++)dp[i][j]=max(dp[i][j],dp[i][k]+dp[k][j]);}}printf("%d\n",dp[0][n-1]);memset(dp,0,sizeof(dp));}
}

转载于:https://www.cnblogs.com/neopenx/p/4050334.html

POJ 2955 (区间DP)相关推荐

  1. poj 2955 区间dp

    题意:给你一串()[]括号,要你求出这串括号的最大匹配个数.如'('与')'匹配,为2个,'['与']'匹配,为2个 思路:区间dp 状态方程: if(s[i]=='('&&s[j]= ...

  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. JavaScript打印杨辉三角
  2. sqlite 数据类型 全面
  3. winfrom水晶报表的创建
  4. vue --- cdn导入,一些基本操作
  5. JVM(2)——JVM类加载机制
  6. android okgo参数,Android OkGo基本操作
  7. 用Python下载文件
  8. 部分Dell 740 不支持 Xen Server?
  9. bootstrap实现单页面跳转_SpringBoot拦截器,国际化,登录实现
  10. 多线程之CountDownLatch工具类
  11. python制作脑图_使用Python将xmind脑图转成excel用例(一)
  12. transition过渡的基本使用
  13. 原生 js、javaScript 处理十位数(带有小数点的浮点数时间戳)、十三位数、时间戳, 将时间戳转换成 年、月、日、时、分、秒、毫秒、正常的日期格式
  14. 原奶周期与伊利、蒙牛的兼并战争
  15. 大物笔记(顺便记记)
  16. 随身WIFI刷真Linux(Debian)系统搭配拓展坞做超低功耗服务器
  17. 目前市面上流行的几种VR头盔设备介绍
  18. 网站实现快速排名的原理与影响
  19. Python库的使用
  20. Win11设置鼠标箭头图案的方法教程

热门文章

  1. Django中过滤的实现
  2. django 学习笔记
  3. JAVA取数两个数组交集,考虑重复和不重复元素
  4. 不讲CRUSH的Ceph教程是不完整的
  5. SpringBoot使用Gradle构建war包
  6. jQuery 标签切换----之选项卡的实现
  7. wpf 客户端【JDAgent桌面助手】开发详解(四) popup控件的win8.0的bug
  8. Delphi 2007体验!
  9. 发布Web Service 注意的问题
  10. 好听的歌曲---爱情转移