NYOJ 题目15 括号匹配(二)(区间DP)
题意 : 中文题不详述。
思路 : 本来以为只是个小模拟,没想到是个区间DP,还是对DP不了解。
DP[i][j]代表着从字符串 i 位置到 j 位置需要的最小括号匹配。
所以初始化的DP[i][i] = 1 ;第i个位置的话需要匹配的最小括号数是1。
状态转移方程 :如果第i个位置和第j个位置的两个括号是匹配的,那么DP[i][j] = DP[i+1][j-1],相当于两边分别往里缩了一个;当i < j 时,DP[i][j] = DP[i][k]+DP[k+1][j] ;
黑书上对于这个问题有详细的解释。我用的就是黑书上的方法二,不过方法二有点赘余,就是我代码中注释的部分,加上也对,不加也可。
#include <stdio.h>
#include <string.h>
#include <iostream> using namespace std ; int dp[][] ;
char ch[] ; int main()
{
int n ;
scanf("%d",&n) ;
getchar() ;
while(n--)
{
scanf("%s",ch);
memset(dp,,sizeof(dp)) ;
int len = strlen(ch) ;
for(int i = ; i < len ; i++)
dp[i][i] = ;
for(int h = ; h < len ; h++)
{
for(int i = ; i < len-h ; i++)
{
int j = h+i ;
dp[i][j] = ;
if((ch[i] == '('&&ch[j] == ')') || (ch[i] == '[' && ch[j] == ']'))
dp[i][j] = min(dp[i][j],dp[i+][j-]) ;
// else if(ch[i] == '(' || ch[i] == '[')
// dp[i][j] = min(dp[i][j],dp[i+1][j])+1 ;
// else if(ch[j] == ')' || ch[j] == ']')
// dp[i][j] = min(dp[i][j],dp[i][j-1])+1 ;
for(int k = i ; k <= j ; k++)
dp[i][j] = min(dp[i][j],dp[i][k-]+dp[k][j]) ;
}
}
printf("%d\n",dp[][len-] ) ;
}
return ;
}
NYOJ 题目15 括号匹配(二)(区间DP)的更多相关文章
- 南阳理工大学oj 题目15 括号匹配(二)
括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述 给你一个字符串,里面只包含"(",")","[&qu ...
- poj2955:括号匹配,区间dp
题目大意: 给一个由,(,),[,]组成的字符串,其中(),[]可以匹配,求最大匹配数 题解:区间dp: dp[i][j]表示区间 [i,j]中的最大匹配数 初始状态 dp[i][i+1]=(i,i+ ...
- POJ 2955 括号匹配,区间DP
题意:给你一些括号,问匹配规则成立的括号的个数. 思路:这题lrj的黑书上有,不过他求的是添加最少的括号数,是的这些括号的匹配全部成立. 我想了下,其实这两个问题是一样的,我们可以先求出括号要匹配的最 ...
- NYOJ15-括号匹配(二)-区间DP
pid=15">http://acm.nyist.net/JudgeOnline/problem.php? pid=15 dp[i][j]表示从i到j至少须要加入多少个括号才干满足匹配 ...
- POJ 2955 Brackets --最大括号匹配,区间DP经典题
题意:给一段左右小.中括号串,求出这一串中最多有多少匹配的括号. 解法:此问题具有最优子结构,dp[i][j]表示i~j中最多匹配的括号,显然如果i,j是匹配的,那么dp[i][j] = dp[i+1 ...
- POJ - 2955 Brackets括号匹配(区间dp)
Brackets We give the following inductive definition of a “regular brackets” sequence: the empty sequ ...
- 「kuangbin带你飞」专题二十二 区间DP
layout: post title: 「kuangbin带你飞」专题二十二 区间DP author: "luowentaoaa" catalog: true tags: - ku ...
- 括号序列(区间dp)
括号序列(区间dp) 输入一个长度不超过100的,由"(",")","[",")"组成的序列,请添加尽量少的括号,得到一 ...
- nyoj 15 括号匹配(二) (经典dp)
题目链接 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些 ...
随机推荐
- Could not delete folder on Win7
I had the same problem on Win 7 and this worked for me in command prompt. Solution 1: RD/S pathname ...
- 承接VR/AR内容应用定制需求
业务范围: 1 承接VR/AR内容应用定制需求: 教育培训.建筑建设.旅游体验.课件教学系统.交通车辆仿真,模拟驾驶系统.游戏等.2 各类最新VR设备,例如GearVR.HTC vive.Oculus ...
- 第七篇、微信小程序-video组件
主要属性: 效果图: ml: <View>1.播放网络视频</View> <view > <video style="width: 100%;hei ...
- (转)基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
转载自:http://warm-breeze.iteye.com/blog/2020413 本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedi ...
- 比较X与Y的大小,绝对精准!!!!!!
代码! #include<stdio.h> int max(int a,int b) { int x; x=a+b; return x; } int main() { int i,n,t; ...
- zabbix短信接口调用
#!/bin/bash TIME=`date +%Y-%m-%d` KEY="UJK9rk50HD8du8JE8h87RUor0KERo5jk" username="za ...
- Limit参数优化MySQL查询的方法
在做一些查询时,总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的.那么,在mysql中有那些方式是可以避免全表扫面?除了通过使用索引列或分区等方式来进行 ...
- push notification for iphone
由于公司业务需求,以前一直做PHP开发,突然让我研究push notification ,一下子迷糊啦,不知所措,抓狂!但是在自己的努力下还是初有成效!现拿出来显摆一下! 1:push notific ...
- 扩展ServiceHost<T>类
public class ServiceHost<T> : ServiceHost { public void EnableMetadataExchange(bool enableHttp ...
- String Subtraction
Given two strings S1 and S2, S = S1 - S2 is defined to be the remaining string after taking all the ...