pku1141Brackets Sequence(括号序列)

题意简述:如下规定:

1.空序列是规则序列;2.S是规则序列,则(S)和【S】也是规则序列;3.AB是规则序列,则AB也是规则序列。

给出有(,),【,】构成的序列,编程求出是添加括号尽量少得到的规则序列。

分析:其实题意已经道出了状态和状态之间的关系,就设dp[i][j]保存从第i个字符到第j个字符构成的序列要达到规则序列所要添加的最少括号数。再设一个字符串类型的数组ans[i][j]来记录数组,其最终的最优值保存在dp[0][len-1]ans[0][len-1]

先根据第二个条件来进行状态转移:(由于这个转移不方便用方程来表示,简述一下)当最外面是()或【】那么dp[i][j]=min(dp[i][j],dp[i+1][j-1]);当一边的一个为‘(’那么dp[i][j]=min(dp[i][j],1+dp[i+1][j]);同理可推这类的其他情况。

再根据第三个条件来状态转移:dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j])

这样就只要把边界处理好就求解出来了(边界代码中列出)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值