【POJ 2955】Brackets(区间DP)
来源:互联网 发布:安卓定时开关机软件 编辑:程序博客网 时间:2024/05/03 17:49
【POJ 2955】Brackets(区间DP)
入门级区间DP
问最长的匹配括号长度。只包含()和[]
要求匹配括号不可交叉,即([)]这种不计入
因为不计交叉情况,转移就很直白。
枚举区间长度l,转移为
if( (str[i] == '(' && str[i+l-1] == ')') || (str[i] == '[' && str[i+l-1] == ']') ) dp[i][i+l-1] = max(dp[i][i+l-1],dp[i+1][i+l-2]+2);//合并相邻区间最长括号匹配数for(int j = i; j < i+l; ++j) dp[i][i+l-1] = max(dp[i][i+l-1],dp[i][j]+dp[j+1][i+l-1]);
代码如下:
#include <iostream>#include <cmath>#include <vector>#include <cstdlib>#include <cstdio>#include <climits>#include <ctime>#include <cstring>#include <queue>#include <stack>#include <list>#include <algorithm>#include <map>#include <set>#define LL long long#define Pr pair<int,int>#define fread(ch) freopen(ch,"r",stdin)#define fwrite(ch) freopen(ch,"w",stdout)using namespace std;const int INF = 0x3f3f3f3f;const int msz = 10000;const int mod = 1e9+7;const double eps = 1e-8;char str[233];int dp[233][233];bool cal(int i,int j){ return (str[i] == '(' && str[j] == ')') || (str[i] == '[' && str[j] == ']');}int main(){ //fread(""); //fwrite(""); while(~scanf("%s",str) && str[0] != 'e') { int len = strlen(str); memset(dp,0,sizeof(dp)); for(int l = 2; l <= len; l++) { for(int i = 0; i+l <= len; ++i) { if(cal(i,i+l-1)) dp[i][i+l-1] = max(dp[i][i+l-1],dp[i+1][i+l-2]+2); for(int j = i; j < i+l; ++j) dp[i][i+l-1] = max(dp[i][i+l-1],dp[i][j]+dp[j+1][i+l-1]); } } 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)
- 山东理工大学 顺序表练习题答案
- IDEA学习(1)
- hdu5895Mathematician QSC(矩阵快速幂+a^b%mod做法)
- Swift - 延长启动图片的显示时间(LaunchImage)
- 【数据结构】栈面试题--两个队列实现一个栈
- 【POJ 2955】Brackets(区间DP)
- 阿牛的EOF牛肉串 递推
- hdu2089——不要62(数位dp)
- 14-Advanced IO
- HDU 5880 The Best Path 欧拉回路+异或 *
- MP4文件格式详解
- Swift - 启动画面放大淡出效果的实现1(使用launch image)
- 反编译之apk0
- HTML5学习_day02(4)--html常用标签分类