DP记录

博客主要介绍了动态规划在解决钢条问题中的应用,通过公式(15.1)和(15.2)阐述了如何找到最优解。文章以钢条长度为10为例,解释了递归思路,并将其与快速排序的划分过程相类比,帮助理解DP解决问题的逻辑。最终提出了避免重复计算的简化公式。
摘要由CSDN通过智能技术生成

DP记录

https://blog.csdn.net/u013309870/article/details/75193592
DP学习心得。

钢条问题

img

img

img

img

公式(15.1):
一个长为10的钢锯条,要得到这个钢锯条的最优切法。有不切和切两种可能,切了之后还有不切和切两种可能,这是一个递归,直到长度为1时不能再切,这是递归出口。
记r(n)为长度为n的钢条的最优解。随便切一刀,得到两段,问题就转化为,r(n)=max{r(n - i) + r(i),p(n)}。这两段中,再随便切一刀,得到四段,直至每个小段长为1为止,每次切割都记录当前价格,最后比较大小。类似于快速排序的划分算法。即得(15.1)公式。

公式(15.2):
简化公式,显然,上述切割方法会有重叠,即 2 + 8 和 8 + 2的切割及其其子切割。所以简化公式为,每次切割后,左段不再切割,看作一个整体,右端继续切割。即得简化公式。

注意,图中和上面的公式下标都从1开始


// 递归法 自顶向下
public int r(int[] p, int n){
    
    int optSolution= p[n - 1]; // 初始化, 对应不切的情况
    if (n == 0) {
   
        optSolution = 0;  // 递归出口
    }
    else {
   
        for
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值