poj 2955 Brackets
2013-07-16 10:20
344 查看
http://poj.org/problem?id=2955 // 求最长合法子序列 // 区间 dp // dp[i][j] 表示区间 i,j 的最长合法子序列 #include <iostream> #include <algorithm> #include <queue> #include <math.h> #include <stdio.h> #include <string.h> using namespace std; #define MOD 1000000007 #define maxn 110 int dp[maxn][maxn]; char a[110]; bool cmp(char c1 ,char c2){ if(c1=='('&&c2==')') return true; if(c1=='['&&c2==']') return true; return false; } int main() { while(scanf("%s",a)){ if(strcmp(a,"end")==0) break; int i,j,k; int len=strlen(a); for(i=0;i<len;i++) { dp[i][i]=0; if(cmp(a[i],a[i+1])) dp[i][i+1]=2;else dp[i][i+1]=0; } for(k=3;k<=len;k++){ for(i=0;i+k-1<len;i++){ dp[i][i+k-1]=0; if(cmp(a[i],a[i+k-1])) dp[i][i+k-1]=dp[i+1][i+k-2]+2; for(j=i;j<i+k-1;j++) dp[i][i+k-1]=max(dp[i][i+k-1],dp[i][j]+dp[j+1][i+k-1]); } } printf("%d\n",dp[0][len-1]); } return 0; }
相关文章推荐
- POJ 2955 Brackets 【区间dp】
- POJ 2955 Brackets(计数问题吗呵呵)
- poj 2955 Brackets(区间DP)
- POJ 2955 Brackets
- POJ 2955-Brackets
- POJ 2955 Brackets 区间DP 入门题
- POJ-2955 Brackets(括号匹配-区间DP)
- poj 2955 Brackets(区间DP)
- POJ 2955 Brackets 【区间DP】
- POJ 2955 Brackets
- POJ 2955 Brackets 区间DP 入门题
- POJ 2955 Brackets (区间DP)
- poj 2955 Brackets(区间dp)
- Brackets (poj 2955)
- POJ 题目2955 Brackets(区间dp)
- POJ 2955 brackets
- poj 2955 Brackets(括号匹配,区间DP)
- poj 2955 Brackets(区间DP)
- POJ 2955 Brackets(区间DP)
- POJ 2955 Brackets 区间DP 入门