poj2955 Brackets 【区间dp】
来源:互联网 发布:mac 虚拟机免费 编辑:程序博客网 时间:2024/05/04 20:51
链接:http://poj.org/problem?id=2955
题意:给你一串由“( )”“[ ]”组成的括号串,现在问你最多的括号匹配。
分析:枚举一个长度,看看这个区间内有多少能匹配的括号,用dp[i][j]表示,s[i]和s[j]能匹配时dp[i][j]=dp[i+1][j-1]+2,然后枚举区间内的点,两段区间合并就可以找到最大的匹配。
代码:
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<vector>#include<queue>#include<cmath>#include<stack>#include<set>#include<map>#define INF 0x3f3f3f3f#define Mn 110#define Mm 2000005#define mod 1000000007#define CLR(a,b) memset((a),(b),sizeof((a)))#define CLRS(a,b,Size) memset((a),(b),sizeof((a[0]))*(Size+1))#define CPY(a,b) memcpy ((a), (b), sizeof((a)))#pragma comment(linker, "/STACK:102400000,102400000")#define ul u<<1#define ur (u<<1)|1using namespace std;typedef long long ll;int dp[Mn][Mn];int main() { char s[110]; while(1) { scanf("%s",s); if(s[0]=='e') break; CLR(dp,0); int len=strlen(s); for(int k=1;k<len;k++) { for(int i=0,j=k;j<len;j++,i++) { if((s[i]=='('&&s[j]==')')||(s[i]=='['&&s[j]==']')) dp[i][j]=dp[i+1][j-1]+2; for(int p=i;p<j;p++) { dp[i][j]=max(dp[i][p]+dp[p+1][j],dp[i][j]); } } } printf("%d\n",dp[0][len-1]); } return 0;}
0 0
- POJ2955:Brackets(区间DP)
- poj2955 Brackets 区间dp
- POJ2955 Brackets (区间DP)
- poj2955 Brackets (区间dp)
- POJ2955:Brackets(区间DP)
- POJ2955 Brackets(区间dp)
- poj2955 Brackets(区间dp)
- poj2955 Brackets 【区间dp】
- POJ2955 Brackets 【区间dp】
- poj2955 Brackets--区间dp
- POJ2955 Brackets(区间DP)
- POJ2955 Brackets(区间DP)
- poj2955 Brackets 简单区间dp
- POJ2955 Brackets(区间DP)
- 【区间DP】POJ2955[Brackets]题解
- poj2955——Brackets(区间dp)
- POJ2955——Brackets(区间dp)
- POJ2955 Brackets(区间DP,括号匹配)
- 各大公司题目整理
- Leetcode 58. Length of Last Word (Easy) (cpp)
- UISearchController的searchBar点击消失的问题解决
- cesiumjs开发实践 (四)
- JSP自定义标签
- poj2955 Brackets 【区间dp】
- JVM性能调优
- hdu--1879继续畅通工程
- 习题11 提问
- android开发五子棋人人对战
- 浅谈设计模式——对象的结构模式
- cesiumjs开发实践 (五)
- eclipse/tomcat: deploy doesn't work any more (ClassNotFoundException)
- 挑战程序设计解题报告 2.6.2素数