POJ 2955 Brackets(区间DP水题)
来源:互联网 发布:最早的网络搜索引擎 编辑:程序博客网 时间:2024/05/16 18:25
题意:给出一个括号序列,求出最长的合法序列的长度。
思路:区间DP
#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<iostream>#include<algorithm>#include<vector>#include<map>#include<queue>#include<stack>#include<string>#include<map>#include<set>#include<ctime>#define eps 1e-6#define LL long long#define pii pair<int, int>//#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;const int MAXN = 105;char str[MAXN];int dp[MAXN][MAXN];int main() { //freopen("input.txt", "r", stdin);while(scanf("%s", str+1)==1 && str[1]!='e') {memset(dp, 0, sizeof(dp));int len = strlen(str+1);for(int i = 1; i < len; i++) if((str[i]=='('&&str[i+1]==')' || str[i]=='['&&str[i+1]==']'))dp[i][i+1] = 2;for(int i = 3; i <= len; i++) {for(int j = 1; j+i-1 <= len; j++) {if(str[j]=='('&&str[j+i-1]==')' || str[j]=='['&&str[j+i-1]==']') dp[j][j+i-1] = dp[j+1][j+i-2] + 2;for(int k = j; k < j+i-1; k++) dp[j][j+i-1] = max(dp[j][j+i-1], dp[j][k]+dp[k+1][j+i-1]);}}cout << dp[1][len] << endl;} return 0;}
0 0
- POJ 2955 Brackets(区间DP水题)
- POJ 2955 Brackets 【区间dp】【水题】
- 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 2955Brackets(区间DP)
- POJ 2955Brackets(区间DP)
- poj 2955 Brackets (区间DP)
- 【POJ 2955】Brackets(区间DP)
- POJ 2955Brackets(区间dp)
- 应用层 加载驱动 和 卸载驱动代码
- eclipse svn操作
- C++中重载、重写(覆盖)和隐藏的区别
- 如何计算时间复杂度
- 关于时间
- POJ 2955 Brackets(区间DP水题)
- Java____实现定时任务的三种方法
- 10-2总结
- Android性能专项测试之GPU Monitor
- 《Hadoop: The Definitive Guide》读书笔记 -- Chapter 2 MapReduce
- [LeetCode]Palindrome Number
- django 模板找不到TemplateDoesNotExist报错!
- Python 实例方法、静态方法、类方法 (二十)
- C#学习日记17---显示类型转换具体用例