noip2015 子串(心得体会)

本文通过noip2015一道动态规划题目,分享了动态规划的解题思路和技巧,包括问题分解、避免子问题重复计算、状态定义、状态转移方程以及滚动数组的空间优化策略。作者通过实例解析了动态规划在字符串匹配中的应用,并提到在解决规模较大的问题时,滚动数组的重要性。
摘要由CSDN通过智能技术生成

今天终于又在联赛提高组中遇到动态规划(Dynamic program)了,~~(><) ~~ ,在各种算法中,稍微掌握得好一点的一块。O(∩∩)O~。侥幸在四人组中拿到头魁,(李兄的强项在AVL树, 红黑树 ,线段树,伸展树, 跳跃表,单调队列,最近公共祖先,倍增,后缀自动机,ac自动机等等高端的应用上,简单动态规划有些薄弱,【但是树形dp,状压dp又超级强,看不懂他】今天勉强打败他,在此分享李兄的博客地址http://blog.csdn.net/lycheng1215
拿到动态规划,第一步,分解问题。注意单纯的递归往往会导致子问题被重复计算,用动态规划的方法,子问题的解一旦求出就要被保存,所以每个子问题只需求解一次。子问题经常和原问题形式相似,有时甚至完全一样,只不过规模从原来的n 变成了n-1,或从原来的n×m 变成了n×(m-1) ……等等。这道题就是依次找到在子串A的n-1位置,有多少种方案可以使得这个找出的新串与字符串 B 相等。对B的话,也有子问题,那就是到B得j-1位置的时候,在i中能提取多少出来。
找到子问题,就意味着找到了将整个问题逐渐分解的办法。 分解下去,直到最底层规模最小的的子问题可以一目了然地看出解。最小子问题就是到1位置,有多少种方案,显然长度小于B串的话,这里是0。
用动态规划解题时,将和子问题相关的各个变量的一

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值