POJ 2955 (dp括号匹配)
来源:互联网 发布:经济数据库万得 编辑:程序博客网 时间:2024/06/06 12:22
题意:
给出一行字符串,里面有 () [] 四种括号,求出有多少个已经匹配好的括号。
思路
区间dp:
我们把dp[i][j]表示从i到j里面有多少已经配好的括号,那么我们假如知道了 i 到 j 区间的最大匹配,那么i+1到 j+1区间的就可以很简单的得到。
那么 假如第 i 个和第 j 个是一对匹配的括号那么dp [ i ] [ j ] = dp [ i+1 ] [ j-1 ] + 2 ;
那么我们只需要从小到大枚举所有 i 和 j 中间的括号数目,然后满足匹配就用上面式子dp,然后每次更新dp [ i ] [ j ]为最大值即可。
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxn = 120;string s;int dp[maxn][maxn];int main(){ //freopen("in.txt","r",stdin); while(cin>>s) { if(s == "end") break; memset(dp,0,sizeof(dp)); int len = s.size(); for(int l = 1;l <= len; l++) { for(int i = 0,j = l;j < len; j++,i++) { if((s[i] == '(' && s[j] == ')') || (s[i] == '[' && s[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+1][j]); } } } printf("%d\n",dp[0][len-1]); } return 0;}
0 0
- poj 2955 区间dp(括号匹配)
- POJ 2955 (dp括号匹配)
- 括号匹配dp (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 括号匹配,区间DP
- POJ 2955 Brackets 括号匹配 区间DP
- poj 2955 区间dp 括号匹配
- POJ 2955 Brackets (区间dp 括号匹配)
- poj 2955 Brackets 括号匹配 区间dp
- poj-2955 括号匹配--简单区间dp
- POJ 1141 括号匹配 DP
- 【区间DP】NYOJ 737石子合并+POJ 2955 Brackets(括号匹配)+NYOJ 15 括号匹配(二)
- 图论算法----网络流----最大流sap算法
- python报错:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb4 in position 2:invalid sta
- Centos 7 安装TFTP Server步骤与疑难
- ubuntu服务器与本地文件传输scp
- 如何为博客增加打赏功能
- POJ 2955 (dp括号匹配)
- spring WebSocket详解
- sql调优简单理解
- Mysql 查看数据表大小
- 图像处理 连通域标记
- HTTPClient4.5.2学习笔记(五):流式请求API(Fluent API)
- Android 根据屏幕的宽度来设置图片的大小,
- 自己实现Spring AOP(二)JDK代理实现AOP
- b.exp : warning LNK4070: .EXP 中的 /OUT:a.dll 指令与输出文件名“b.dll"不同;忽略指令