def maxProductAfterCutting_solution(length):
if length <2: #因为要求至少剪成两段
return -1
if length ==2:
return 1
if length ==3:
return 2
product={}
product[1]=1
product[2]=2
product[3]=3 #不再分割
for i in range(4,length+1):
max = 0
for j in range(1,int(i/2)+1):
result = product[j]*product[i-j]
if result > max:
max=result
product[i]=max
return product[length]
def maxProductAfterCutting_solution1(length): #贪婪算法
if length <2: #因为要求至少剪成两段
return -1
if length ==2:
return 1
if length ==3:
return 2
count=int(length/3)
if (length-count*3) == 1:
count=count-1
count2=(length-3*count)/2
return int(3**count)*(2**count2)
剑指offer【14】动态规划 剪绳子
最新推荐文章于 2022-03-14 13:18:51 发布