二次学习动态规划

本文二次探讨动态规划,以买书问题和最长上升子序列为例,详细阐述动态规划的概念、状态定义与转移方程。通过示例分析动态规划解决最长上升子序列问题的思路,提供状态转移方程的推导过程。
摘要由CSDN通过智能技术生成

二次学习动态规划

最近在看一本经典的程序员书籍:《编程之美》,里面有一道买书的算法题,书中指导使用动态规划去解决该问题,虽然一年前有那么几天看似深入的学习了一下动态规划,但这次看完书上的解释之后还是不太清楚如何写代码去解决买书问题,所以用文章的方式再次记录一遍自己学习动态规划与解决买书问题的过程。

动态规划

动态规划是通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法,前面这句解释是从维基百科摘录的,描述的相对简单,全文还有更为详细的解释,有兴趣的朋友可以看一下,不过看完后可能依旧云里雾里。

但知乎上的这个回答感觉是讲清了动态规划的本质,即寻找状态定义与状态转移方程,为了保证状态转移方程的正确性,可能需要严谨的证明过程,《编程之美》在买书问题上对动态规划解法着重讲解的就是状态转移方程的证明过程。

针对动态规划相关话题,自己只是门外汉,没有什么深刻的认识,故不做主观上的讲解,大家Google就好~

最长上升子序列

问题

最长上升子序列问题,算是动态规划话题的中的典型问题,理解起来不算特别复杂,问题描述:

给定一个数列,长度为N,求这个数列的最长上升(递增

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值