POJ 2955 brackets
来源:互联网 发布:模拟位置软件 编辑:程序博客网 时间:2024/06/03 10:20
今天开始进行日常的博客更新。
做的第一道区间dp题,思路是找一个可以递推的状态,这道题我重点思考了对于 ” ()() ” 和 ” ( ( ) )” 这两种形式的括号匹配的递推,于是发现新状态的递推有两种,dp[l][r] = dp[l+1][r-1] + 2 和 dp[l][r] = dp[l][k] + dp[k+1][r],于是此题可做。
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int check(char a,char b){ if(a=='(' && b==')') return 1; if(a=='[' && b==']') return 1; return 0;}int main(){ char str[105]; int dp[105][105],i,j,k,len; while(~scanf("%s",str)) { if(!strcmp(str,"end")) break; len = strlen(str); for(i = 0; i<len; i++) { dp[i][i] = 0; if(check(str[i],str[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(check(str[i],str[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;}
阅读全文
0 0
- DP poj 2955 Brackets
- poj 2955 brackets
- POJ 2955 Brackets
- POJ 2955 Brackets
- POJ 2955 Brackets
- poj 2955 Brackets
- POJ 2955 Brackets
- POJ 2955 Brackets
- poj 2955 Brackets
- POJ 2955 Brackets
- POJ 2955:Brackets
- POJ 2955 Brackets
- POJ 2955 brackets
- POJ 2955 Brackets
- POJ 2955 Brackets
- Brackets (poj 2955)
- poj 2955 Brackets
- POJ 2955 Brackets (基础)
- git bash【初级入门篇】
- 272
- 学习嵌入式要学哪些课程?
- Content-type类型
- 273
- POJ 2955 brackets
- 274
- System.arraycopy() 浅拷贝 深拷贝
- AppDelegate方法调用次序
- 275
- 跨环境实现通用模块seajs
- Netty笔记——技术点汇总
- DateTimePicker
- 随机数算法