前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动态规划之钢条切割问题:自顶向下(Python实现)

动态规划之钢条切割问题:自顶向下(Python实现)

作者头像
手撕代码八百里
发布2020-07-29 09:46:22
6930
发布2020-07-29 09:46:22
举报
文章被收录于专栏:猿计划
代码语言:javascript
复制
#
#钢条切割问题:自顶向下(由大到小)
#

#自顶向下递归实现
# def CUT_ROD(p,n):
#     if n==0:
#         return 0;
#     q = -1000
#     for i in range(1,n):
#         q = max(q,p[i]+CUT_ROD(p,n-i))
#     return q

#获得最大值
def max(a,b):
    maxData = a;
    if maxData < b:
        maxData = b;
    return maxData

# 备忘机制的CUT-ROD
def MEMOIZED_CUT_ROD_AUX(p, n, r):
    # print("p=",p)
    # print("n=",n)
    # print("r=",r)
    n = n - 1
    if r[n] >= 0:
        return r[n]
    if n == 0:
        q = 0
    else:
        q = -9999
        for i in range(1, n):
            # print(int(p[i]))
            q = max(q, int(p[i]) + int(MEMOIZED_CUT_ROD_AUX(p,n-i,r)))
    r[n] = q
    return q

def MEMOIZED_CUT_ROD(p,n):
    r = {}
    for i in range(0,n):
        r[i] = -9999
    return MEMOIZED_CUT_ROD_AUX(p,n,r)
if __name__ == '__main__':
    p = [1,5,8,9,10,17,17,20,24,30]
    #长度  i	 0   1	2	3	4	5	6	7	8	9	10
    #价格 pi      0	 1	5	8	9	10	17	17	20	24	30
    n = 20
    print("最大的收益:",MEMOIZED_CUT_ROD(p,10))
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/11/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档