动态规划的简单总结

本文是对动态规划的简单总结,主要分为两类问题:求最优解(如背包问题)和求解的个数(如整数拆分问题)。通过设立二维动态规划数组,利用状态转移方程求解,例如背包问题的关键状态转移方程是dp[i][r]=MAX(dp[i-1][r], dp[i-1][r-w[i]]+v[i])。动态规划的核心在于找到正确状态转移方程,有时可使用滚动数组减少空间复杂度。" 106696152,7169349,Python TCP网络编程实战,"['Python', '网络编程', 'socket']
摘要由CSDN通过智能技术生成
首先从斐波那契数列来看动态规划,递推公式为:f(n+2)=f(n+1)+f(n)。
若普通求解f(n),则需要一直往下递推,直到f(1)和f(2)为止,但用动态规划,使用dp数组储存每个阶段的f(n),则每次f的求解都不需要循环往下计算,只需调用dp数组中n-1与n-2阶段的f值即可。
    这样大大节约运行时间,动态规划也就是做这么件事。

动态规划的使用场景:各阶段的最优解有一定的相关型,某一阶段的最优解可以根据前一阶段的最优解再计算的来。
dp数组是最优解数组,任意数据是当前情况下的最优解(动态规划的核心
如何确定dp数组(如何计算出dp数组)是解题的关键。(找出规律)

动态规划的题型我大概将其分为两类:
一:求最优解问题。(背包问题)
二:求解的个数问题。(整数的k拆分问题)

最优解问题
最优解问题最有代表性的是背包问题。

问题描述:
有n个重量分别为{w1,w2,…,wn}的物品,它们的价值分别为{v1,v2,…,vn},给定一个容量为W的背包。
设计从这些物品中选取一部分物品放入该背包的方案,每个物品要么选中要么不选中,要求选中的物品不仅能够放到背包中,而且重量和为W具有最大的价值。

问题解析:
对于可行的背包装载方案,背包中物品的总重量不能超过背包的容量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值