间隔DP基础 POJ2955——Brackets
取血怒。first blood,第一区间DP,这样第一次没有以某种方式在不知不觉中下降~~~
题目尽管是鸟语。但还是非常赤裸裸的告诉我们要求最大的括号匹配数。DP走起~
dp[i][j]表示区间[i,j]的最大匹配数。那么最重要的状态转移方程就是:
dp[i][j]=max(dp[i][k]+dp[k+1][j])
对啦,要先初始化边界啊。两步走~:
memset(dp,0,sizeof dp);
if str[i]==str[i+1] 则:dp[i][i+1]=2 请看---->> 该字符串 ( [ ] [ ] [ ) 非常好懂有木有
万恶的贴代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int dp[110][110];
char s[110];
bool check(int i,int j)//推断是不是匹配的
{
if(s[i]=='['&&s[j]==']') return true;
if(s[i]=='('&&s[j]==')') return true;
return false;
}
int main()
{
while(scanf("%s",s)!=EOF){
if(strcmp(s,"end")==0) break;
int l=strlen(s);
memset(dp,0,sizeof dp);
for(int i=0;i<l;i++){ //初始化
if(check(i,i+1)){
dp[i][i+1]=2;
}
} for(int p=3;p<=l;p++){ //枚举区间长度
for(int i=0;i<=l-p;i++){ //枚举区间起点
int j=i+p-1;
if(check(i,j)){
dp[i][j]=dp[i+1][j-1]+2;
}
for(int k=i;k<j;k++){ //将区间分成两段
dp[i][j]=max(dp[i][j],dp[i][k]+dp[k][j]);
}
}
}
cout<<dp[0][l-1]<<endl;
}
return 0;
}
间隔DP基础 POJ2955——Brackets的更多相关文章
- POJ2955 Brackets —— 区间DP
题目链接:https://vjudge.net/problem/POJ-2955 Brackets Time Limit: 1000MS Memory Limit: 65536K Total Su ...
- poj 2955 Brackets (区间dp基础题)
We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a ...
- POJ 3280 间隔DP
字符串,每次插入或删除字符需要一定的价格,问:我怎样才能使这个字符串转换成字符串回文,花最少. 间隔DP 当DP到区间[i,j+1]时,我们能够在i-1的位置加入一个str[j+1]字符,或者将在j+ ...
- 【专章】dp基础
知识储备:dp入门. 好了,完成了dp入门,我们可以做一些稍微不是那么裸的题了. ----------------------------------------------------------- ...
- 【学习笔记】dp基础
知识储备:dp入门. 好了,完成了dp入门,我们可以做一些稍微不是那么裸的题了. dp基础,主要是做题,只有练习才能彻底掌握. 洛谷P1417 烹调方案 分析:由于时间的先后会对结果有影响,所以c[i ...
- hdu 2089 不要62 (数位dp基础题)
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- DP基础(线性DP)总结
DP基础(线性DP)总结 前言:虽然确实有点基础......但凡事得脚踏实地地做,基础不牢,地动山摇,,,嗯! LIS(最长上升子序列) dp方程:dp[i]=max{dp[j]+1,a[j]< ...
- 树形dp基础
今天来给大家讲一下数形dp基础 树形dp常与树上问题(lca.直径.重心)结合起来 而这里只讲最最基础的树上dp 1.选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程 ...
- poj2955 Brackets (区间dp)
题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...
随机推荐
- go语言初体验
go下载地址: http://code.google.com/p/go/downloads/list go官方安装地址: http://golang.org/doc/install 另外收集一些关于g ...
- MySQL 关闭FOREIGN_KEY_CHECKS检查
SET FOREIGN_KEY_CHECKS=0; truncate table QRTZ_BLOB_TRIGGERS; truncate table QRTZ_CALENDARS; truncate ...
- hdu 4284 Travel(floyd + TSP)
虽然题中有n<=100个点,但实际上你必须走过的点只有H<=15个.而且经过任意点但不消耗C[i]跟D[i]可以为无限次,所以可以floyd预处理出H个点的最短路,之后剩下的...就成了裸 ...
- Mqtt协议IOS移植完1
MQTTClient.h #import <Foundation/Foundation.h> @protocol MQTTDelegate <NSObject> /** * @ ...
- form表单中的 action=./?> 是什么意思
./代表当前目录,?代表查询字符串为空 action="" //一般可以为空的,这里的双引号都要有的,表示提单提交给自己(也就是当前页处理)action="a.php&q ...
- hdu1824(two-sat)
传送门:Let's go home 题意:有n个队伍要回家,但是每队必须留下一人,而且m个限制,a留下,b必须回家,问能否在限制条件下每队留下一人. 分析:将每个队的队长和两个队员当成i和i':然后对 ...
- 一二三(The Seventh Hunan Collegiate Programming Contest)
一二三 你弟弟刚刚学会写英语的一(one).二(two)和三(three).他在纸上写了好些一二三,可惜有些字母写错了.已知每个单词最多有一个字母写错了(单词长度肯定不会错),你能认出他写的啥吗? 输 ...
- 关于CodeReview(java)(转)
关于codereview,在平时的开发中,经常忽略的环节,参照目前介绍写好代码的几本书和之前掉进的坑,做了一个总结,分享出来. 为什么要做 通过review规避一些代码层面的问题 提升可读性,方便后续 ...
- MySql 安装及0基础使用具体解释
1. sudo apt-get install mysql-server, input administrator password , '123' 2. enter mysql promot in ...
- 获取Enum枚举值描述的几法方法
原文:获取Enum枚举值描述的几法方法 1.定义枚举时直接用中文 由于VS对中文支持的很不错,所以很多程序员都采用了此方案. 缺点:1.不适合多语言 2.感觉不太完美,毕竟大部分程序员大部分代码都使用 ...