初学DP(1) 黑书中的《括号序列》

本文是初学者对动态规划的初步探讨,通过分析《括号序列》问题,详细阐述了如何建立递推关系,从而解决编程竞赛中的POJ与ZOJ题目。涉及C++编程语言和算法应用。
摘要由CSDN通过智能技术生成
题目:括号序列
定义如下规则序列(字符串):
1.空序列是规则序列;
2.如果S是规则序列,那么(S)和[S]也是规则序列;
3.如果A和B都是规则序列,那么AB也是规则序列;
例如,下面的字符串都是规则序列:
(),    [],    (()),    ([]),    ()[()];
而这几个就不是规则序列:
(,    [,    )(,    ([];
现在给出一些有'(',')','[',']'构成的序列,请添加少量的括号,得到一个规则的序列。

分析:
用s[i],s[j]表示字符串S的第i个字符和第j个字符,i<j,用ans[i][j]表示从第i个字符到第j个字符最少需要添加的括号数;
如果s[i]='(',s[j]=')'或 s[i]='[',s[j]=']',那么ans[i][j]=min(ans[i+1][j-1],ans[i][j]);
如果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值