这个方程有两种形式,本文采用
if(s[i]=s[j]) dp[i][j]=d[i-1][j-1]
  dp[i][j]=min(dp[i][k]+dp[k+1][j],dp[i][j]) (i=<k<j)
 
其实与另一种方法比较:根据j的所有匹配情况取最小值
1.i到j无匹配,取为dp[i][j-1]+1
2.列举所有匹配情况 dp[i][k-1]+dp[k+1][j]
取上述所有情况最小值
 
两者都能获得正确的结果。
同时两者的初始化为 dp[i][j]==1 if(i==j)
规划方向为:
 
   
   
(1) (2)  (3) (4)填写顺序
1 (1) (3) (6) (10)
  1 (2) (5) (9)
    1 (4) (8)
      1 (7)
        1
// ConsoleApplication8.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#include<string>
#include<memory.h>
using namespace std;
#define min(x,y) (x < y ? x : y) bool isEqual(char c,char b)
{
if(c=='('&&b==')') return true;
if(c=='['&&b==']') return true;
return false; } int main()
{
int dp[][]; int len;
cin>>len;
while(len--)
{
string a;
cin>>a;
int len=a.length();
memset(dp,,sizeof(dp));//clear
dp[][]=;
for(int i=;i<len;i++)
{
dp[i][i]=; for(int j=i-;j>=;j--)
{
dp[j][i]=;
if(isEqual(a[j],a[i]))
{
dp[j][i]= min(dp[j][i],dp[j+][i-]);
}
for(int k=j;k<i;k++)
{
dp[j][i]=min(dp[j][k]+dp[k+][i],dp[j][i]); } } } cout<<dp[][len-]<<endl; } }
// ConsoleApplication8.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#include<string>
#include<memory.h>
using namespace std;
#define min(x,y) (x < y ? x : y) bool isEqual(char c,char b)
{
if(c=='('&&b==')') return true;
if(c=='['&&b==']') return true;
return false; } int main()
{
int dp[][]; int len;
cin>>len;
while(len--)
{
string a;
cin>>a;
int len=a.length();
memset(dp,,sizeof(dp));//clear
// cout<<dp[45][56]<<endl;
dp[][]=;
dp[][]=;
for(int i=;i<=len;i++)
{
dp[i][i]=; for(int j=i-;j>=;j--)
{
dp[j][i]=dp[j][i-]+; //没有匹配的情况
for(int k=j;k<i;k++)
{
if(isEqual(a[k-],a[i-]))
{
dp[j][i]= min(dp[j][i],dp[j][k-]+dp[k+][i-]);
} } } } cout<<dp[][len]<<endl; } }

nyoj 括号匹配的更多相关文章

  1. [原]NYOJ 括号匹配系列2,5

    本文出自:http://blog.csdn.net/svitter 括号匹配一:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号匹配二:htt ...

  2. NYOJ - 括号匹配(二)(经典dp)

    括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描写叙述 给你一个字符串,里面仅仅包括"(",")","[&quo ...

  3. NYOJ 题目15 括号匹配(二)(区间DP)

    点我看题目 题意 : 中文题不详述. 思路 : 本来以为只是个小模拟,没想到是个区间DP,还是对DP不了解. DP[i][j]代表着从字符串 i 位置到 j 位置需要的最小括号匹配. 所以初始化的DP ...

  4. [NYOJ 15] 括号匹配(二)

    括号匹配(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:6   描述 给你一个字符串,里面只包含"(",")","[&qu ...

  5. nyoj 15 括号匹配(2)

    括号匹配(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:6 描述 给你一个字符串,里面只包含"(",")","[" ...

  6. nyoj 15 括号匹配(二) (经典dp)

    题目链接 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些 ...

  7. DP_括号匹配序列问题

    括号匹配问题 简单括号匹配问题是给出字符串,判断字符串中的括号是否匹配,此类问题核心解决方案就是利用栈的后进先出的特性,从左到右依次遍历字符串,遇左括号进栈,遇右括号将其与栈顶元素配对,若能配对,则栈 ...

  8. 括号匹配 区间DP (经典)

    描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来 ...

  9. YTU 3003: 括号匹配(栈和队列)

    3003: 括号匹配(栈和队列) 时间限制: 1 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版] 题目描述 假设一个表达式中只允许包含三种括号:圆括号&quo ...

随机推荐

  1. python正则的中文处理

    因工作需要,要查找中文汉字分词,因为python正则表达式\W+表示的是所有的中文字就连标点符号都包括.所以要想办法过滤掉. 参考博客:http://log.medcl.net/item/2011/0 ...

  2. 【@ContextConfiguration】java世界的那些注解

    @ContextConfiguration Spring整合JUnit4测试时,使用注解引入多个配置文件 单个文件 @ContextConfiguration(Locations="../a ...

  3. 一步步学习NHibernate(2)——配置NHibernate的环境

    请注明转载地址:http://www.cnblogs.com/arhat 第二章 环境搭建 在上一章中,我们知道了NHibernate是用来干什么的了,那么今天在本章中,我们开始搭建NHibernat ...

  4. noj [1479] How many (01背包||DP||DFS)

    http://ac.nbutoj.com/Problem/view.xhtml?id=1479 [1479] How many 时间限制: 1000 ms 内存限制: 65535 K 问题描述 The ...

  5. Collection和Collections的区别

    Collection 是集合类的上级接口,继承它的接口主要有set和list.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索,排序,线程安全化等操作.

  6. 关于c++字符串的while(*temp++)

    首先,上一段代码 static bool reverse_str(const char *str) { const char *temp=str; while(*temp++); temp-=; // ...

  7. CSS 实现背景半透明

    IE过渡滤镜 + CSS3 rgba 即可完美实现. 具体实现代码如下: .transparent {     background:rgba(0, 0, 0, 0.3);     filter:pr ...

  8. [BZOJ 4103] [Thu Summer Camp 2015] 异或运算 【可持久化Trie】

    题目链接:BZOJ - 4103 题目分析 THUSC滚粗之后一直没有写这道题,从来没写过可持久化Trie,发现其实和可持久化线段树都是一样的.嗯,有些东西就是明白得太晚. 首先Orz ZYF-ZYF ...

  9. 关于最大流的EdmondsKarp算法详解

    最近大三学生让我去讲课,我就恶补了最大流算法,笔者认为最重要的是让学弟学妹们入门,知道算法怎么来的?为什么是这样?理解的话提出自己的改进,然后再看看Dinic.SAP和ISAP算法….. 一.概念引入 ...

  10. "Money, Money, Money"

    acdream1408:http://115.28.76.232/problem?pid=1408 题意:给你一个x,让你构造a,b,是的na+bm可以组成大于x的所有的数.a>1,b>1 ...