poj 2955 Brackets(区间dp)
来源:互联网 发布:python range to list 编辑:程序博客网 时间:2024/06/16 23:46
题目链接:poj2955
题目大意:给出一个字符串,进行括号的匹配。 (和),[和],两对括号,问一个字符串中最对有几个括号是互相匹配的
思路:简单的区间dp问题 o(n^3)的复杂的
第一层循环枚举区间的长度,第二层循环是这个区间的起始点,第三个循环是这个区间的内的间断点。
#include<iostream>#include<iostream>#include<cstring>#include<string.h>#include<algorithm>#include<cstdio>using namespace std;#define maxn 200char s[maxn];int dp[maxn][maxn];int getmatch(int i,int j){if((s[i]=='('&&s[j]==')')||(s[i]=='['&&s[j]==']'))return 2;else return 0;}void solve(int len){memset(dp,0,sizeof dp);for(int i=0;i<len-1;i++)dp[i][i+1]=getmatch(i,i+1);for(int d=2;d<len;d++){for(int i=0,j;(j=i+d)<len;i++){dp[i][j]=dp[i+1][j-1]+getmatch(i,j);for(int k=i;k<j;k++){dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]);}}}}int main(){while(~scanf("%s",s)){if(s[0]=='e')break;int len=strlen(s);solve(len);printf("%d\n",dp[0][len-1]);}return 0;}
阅读全文
0 0
- Brackets(poj-2955)(区间dp)
- POJ 2955-Brackets(区间DP)
- poj 2955 Brackets(区间DP)
- POJ 题目2955 Brackets(区间dp)
- poj 2955 Brackets(区间dp)
- POJ 2955 Brackets (区间DP)
- poj 2955 Brackets(区间dp)
- poj 2955 Brackets (区间dp)
- POJ - 2955 Brackets(区间dp)
- POJ 2955 Brackets(区间DP水题)
- POJ 2955 Brackets(区间DP)
- poj--2955--Brackets(区间dp)
- POJ 2955Brackets(区间DP)
- POJ 2955Brackets(区间DP)
- poj 2955 Brackets (区间DP)
- 【POJ 2955】Brackets(区间DP)
- POJ 2955Brackets(区间dp)
- POJ 2955 Brackets (区间DP)
- 动态规划:从新手到专家
- 在Ubuntu中安装sublime并编译以及运行C++程序
- HDU 1465:不容易系列之一
- 引用可以是void类型吗?
- HIT 2430 Counting the algorithms (树状数组)
- poj 2955 Brackets(区间dp)
- 如何在元组中的每个元素命名,提高程序可读性
- centos下saltstack的安装与部署
- 关于ActionBar
- Javascript 中 == 和 === 区别
- 23个MySQL常用查询语句
- Spring 框架简介
- HDFS的文件系统
- HDU-1896-Stones