浅谈动态规划问题的优化

本文探讨了动态规划在解决交错字符串问题时的优化方法,通过约束关系降低空间复杂度,从三维数组优化到二维。进一步,通过理解状态的时序性,实现仅遍历一次达到空间优化,提升算法效率。
摘要由CSDN通过智能技术生成

动态规划(Dynamic programming)是一种常见而具备很大开发潜力的算法,若要追奔朔源,所谓的动态规划其实就是“借助表格”来记录过去的“状态”,以减小探索未来状态过程中不必要的重复求解步骤(实际上programming在这里就是指表格,而不是编程...).至于该在什么时候用动态规划,这里推荐LeetCode 123. 买卖股票的最佳时机 III 的题解 “一个通用方法团灭 6 道股票问题” ,其中很明确地阐述了动态规划的使用方法。最为重要的部分莫过于“状态、选择和转移”。因本篇侧重于叙述动态规划的优化问题,关于何时应当使用动态规划不多做阐述,简单来说,其中经验性的部分也占据很大比重---“看到一个问题,感觉能够使用动态规划”此类,比如往往在字符串问题上,动态规划的效能要好于深度优先搜索,等等。

 

优化方法

为了比较具体地叙述动态规划的优化步骤,这里以实际的题目为例。题源为LeetCode 97. 交错字符串

题目描述如下:

给定三个字符串 s1s2s3, 验证 s3 是否是由 s1 和 s2 交错组成的。

比如输入 s1 = "aabcc", s2 = "dbbca", <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值