POJ - 2955 Brackets (区间DP)
题目:
给出一个有括号的字符串,问这个字符串中能匹配的最长的子串的长度。
思路:
区间DP,首先枚举区间长度,然后在每一个长度中通过枚举这个区间的分割点来更新这个区间的最优解。还是做的少。
代码:
//#include <bits/stdc++.h> #include <cstdio> #include <cstring> #include <iostream> #define MAX 1000000000 #define FRE() freopen("in.txt","r",stdin)using namespace std; const int maxn = 105; char str[maxn]; int dp[maxn][maxn];int main() {//FRE();while(gets(str)){if(strcmp(str,"end")==0) { break; }if(strcmp(str,"")==0) {printf("0\n"); break;}int length = strlen(str);for(int i=0; i<length; i++){for(int j=0; j<length; j++){ dp[i][j] = 0; }}//printf("length: %d\n",length);for(int len=1; len<length; len++)//枚举区间的长度 {for(int i=0; i+len<length; i++){int j = i+len;if((str[i]=='(' && str[j]==')') || (str[i]=='['&&str[j]==']')){dp[i][j] = max(dp[i+1][j-1]+2,dp[i][j]);//当前这个区间是由哪个区间得来的 }for(int k=i; k<=j; k++)//更新这个区间的最优解 {dp[i][j] = max(dp[i][j],dp[i][k]+dp[k+1][j]);}}} // printf("%d\n",dp[1][2]); // printf("%d\n",dp[3][4]); // printf("%d\n",dp[1][4]); // printf("%d\n",dp[1][5]);printf("%d\n",dp[0][length-1]);}return 0; }
转载于:https://www.cnblogs.com/sykline/p/10497140.html
POJ - 2955 Brackets (区间DP)相关推荐
- 【DP】 POJ 2955 Brackets 区间DP
从小区间到大大区间 并计算 当前能否 括号匹配 #include <cstdio> #include <cstring> #include <cstdlib> #i ...
- Brackets POJ - 2955 (区间DP+最大括号匹配子序列)
传送门 题目:给一个长度n(<=100)的只包含'[',']','(',)'的字符串,求最长的完全匹配的子序列.输出长度 题解:区间dp,dp[i][j]表示i~j的最长匹配数,一支dp[i][ ...
- Codeforces 508E Arthur and Brackets 区间dp
Arthur and Brackets 区间dp, dp[ i ][ j ]表示第 i 个括号到第 j 个括号之间的所有括号能不能形成一个合法方案. 然后dp就完事了. #include<bit ...
- POJ 2955 Brackets (区间DP)
题目链接:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...
- poj2955 Brackets (区间dp)
题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...
- poj 3280(简单区间dp)
题意:将一个字符串转换成回文串的最小花费. 解题思路:简单的区间dp,dp[i][j]表示从i到j的字符串转换成回文串的最小化费. #include<iostream> #include& ...
- POJ 2955 Brackets(括号匹配一)
题目链接:http://poj.org/problem?id=2955 题目大意:给你一串字符串,求最大的括号匹配数. 解题思路: 设dp[i][j]是[i,j]的最大括号匹配对数. 则得到状态转移方 ...
- 【DP_区间DP专辑】
区间DP是一类在区间上进行动态规划的最优问题,一般是根据问题设出一个表示状态的dp,可以是二维的也可以是三维的,一般情况下为二维.然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右 ...
- poj 2955 区间dp
题意:给你一串()[]括号,要你求出这串括号的最大匹配个数.如'('与')'匹配,为2个,'['与']'匹配,为2个 思路:区间dp 状态方程: if(s[i]=='('&&s[j]= ...
最新文章
- git config —global_Git多用户配置
- 香港浸会大学计算机系月入4万博士你还不心动吗?
- insert时调用本身字段_「技术篇」ETL工具Kettle数据对比同步以及Java程序中调用
- 消费扶贫谋定中国农民丰收节交易会 洛水山肴乡村振兴
- 利用python将txt文件中的内容写入Excel文件中
- (转载)简洁、明晰!数据库设计三大范式应用实例剖析
- 必备收藏 | 超详细揭秘 Redis 持久化,建议收藏!
- sql中毫秒数与格式化时间的转换
- 设计模式-第四篇之代理模式
- GPUGraphicsGame tools
- 《数据结构》C语言版(清华严蔚敏考研版) 全书知识梳理 + 练习习题详解(超详细清晰易懂)
- 网络与社会导论之幂律与富者更富及其与长尾、齐普夫定律等的关系
- SQL Server 2014下载及安装教程
- python编程题3.5:恺撒密码
- DSP 性能 GMAC 和 GFLOP含义
- PCIe的内存地址空间、I/O地址空间和配置地址空间
- Linux学习笔记——Nginx安装部署
- css display flew 伸缩盒模型
- 产品上ref和lot是什么意思_产品上的LOT是什么意思?
- Spring Cloud 笔记