剪绳子python

编程入门 行业动态 更新时间:2024-10-23 11:28:48

剪<a href=https://www.elefans.com/category/jswz/34/1739323.html style=绳子python"/>

剪绳子python

题目

给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],…,k[m].请问k[0]k[1]…*k[m]可能的最大乘积是多少?例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三段,此时得到的最大乘积是18.

解题思想

动态规划(具体解法及思路见代码注释)

class Solution():

def maxProfuctAfterCutting(self,length):

if length < 2:

return 0

if length == 2:

return 1

if length == 3:

return 2

products = [0,1,2,3]

for i in range(4,length+1):

max = 0

for j in range(1,i//2+1):

# 思路:每次求解值时将其他小于需要求解的长度是都列出来放在一个数组里

# 如:求长度为5,最优解数组里必须得有长度为1,2,3,4的最优解值

# 注:此处使用列表保存最优解数组是为了性能优化,虽然递归求解也能解出,但会造成大量重复执行

temp = products[j] * products[i-j]

if temp>max:

max = temp

products.append(max)

return products[length]

更多推荐

剪绳子python

本文发布于:2024-02-17 15:01:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1694444.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:绳子   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!