python----动态规划


# 例子1:
# 剑指Offer(第二版)面试题14:剪绳子
# 给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],…,k[m].请问k[0]k[1]…*k[m]可能的最大乘积是多少?

# 分析:
# f(1) = 0
# f(2) = 1*1 = 1  如果不剪,则为2
# f(3) = 1*2 = 2  如果不剪,则为3
# f(4) = max(1*3,1*1*2,2*2) = 4
# ...
# 可以看出,当长度为1,2,3时,这是特殊值,如果不剪则更大,当给定的值大于3时,我们把2,3作为不剪的,则可以得出

# f(n) = max(f(1)*f(n-1),f(2)*f(n-2)...f(n//2)*f(n-n//2))
#  那么,我们用一个列表来存每一个对应的值,索引对应的就是绳子长度n
def cut(n):
    if n == 1:
        return 0
    if n == 2:
        return 1
    if n == 3:
        return 2
    # 构造一个数组
    res_list = [0] * (n + 1)
    # 设置数组初始的1,2,3的值
    res_list[1] = 1
    res_list[2] = 2
    res_list[3] =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值