【DP】 POJ 2955 Brackets 区间DP
从小区间到大大区间
并计算 当前能否 括号匹配
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <string>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <cmath>
using namespace std;
#include <queue>
#include <stack>
#include <vector>
#include <deque>
#include <map>
#define cler(arr, val) memset(arr, val, sizeof(arr))
typedef long long LL;
const int MAXN = 10000+6;
const int MAXM = 140000;
const int INF = 0x3f3f3f3f;
const int mod = 1000000007;
char s[122],c[122];
int dp[123][123],n;
int main()
{
#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);
#endifwhile(scanf("%s",s)){if(strcmp(s,"end")==0) break;int len=strlen(s);for(int i=0;i<len;i++)c[i+1]=s[i];cler(dp,0);for(int i=1;i<len;i++)if((c[i]=='('&&c[i+1]==')')||(c[i]=='['&&c[i+1]==']'))dp[i][i+1]=2;for(int i=1;i<=len;i++)//区间长度{for(int l=1;l+i<=len;l++)//起始位置{int r=l+i;if((c[l]=='('&&c[r]==')')||(c[l]=='['&&c[r]==']'))//当前格子满足dp[l][r]=max(dp[l][r],dp[l+1][r-1]+2);for(int k=l+1;k<=r-1;k++)//合并两个区间{dp[l][r]=max(dp[l][r],dp[l][k]+dp[k][r]);}}}cout<<dp[1][len]<<endl;}return 0;
}
【DP】 POJ 2955 Brackets 区间DP相关推荐
- 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 ...
- POJ - 2955 Brackets (区间DP)
题目: 给出一个有括号的字符串,问这个字符串中能匹配的最长的子串的长度. 思路: 区间DP,首先枚举区间长度,然后在每一个长度中通过枚举这个区间的分割点来更新这个区间的最优解.还是做的少. 代码: / ...
- 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
文章目录 前言 例题 例题[1]石子合并 例题[2]回文子序列 小结 例题[3]环形石子合并(破环成链) 例题[4]多边形 [例题5]String painter 前言 区间dp,顾名思义,是解决一类 ...
- 【DP_区间DP专辑】
区间DP是一类在区间上进行动态规划的最优问题,一般是根据问题设出一个表示状态的dp,可以是二维的也可以是三维的,一般情况下为二维.然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右 ...
最新文章
- SQL基础操作_4_表的插入、更新、删除、合并操作
- Freemarker模板引擎
- 2017.3.23下午
- 【离散数学】树的基本概念和结论
- 云图说|ModelArts Pro,为企业级AI应用打造的专业开发套件
- Machine Learning系列实验--SoftMax Regression
- Memcached:高性能分布式对象缓存系统
- 将下图的nfa确定化为dfa_实战技术利用AutoCAD确定PCB板型
- sas macro 入门
- Java面试题中高级,java简历技术栈怎么写
- CS5216 Capstone DP to hdmi 1080p转换器或者转接线设计原理|CS5216 DP转HDMI转换电路原理图
- Good Bye 2018 ABCD题解
- java爬取今日头条文章
- 2020年2月全国程序员工资统计,平均工资13716元
- vue3 创建vue3模板
- 第 16 章 string类和标准模板库
- 工作了4年的JAVA程序员应该具备什么技能?
- 从0配置halo博客并配置SSL
- VUE+Element中eldialog弹框控制最小宽度
- 知识图谱入门——认识知识图谱