动态规划问题
根据已知当绳子分段为f(2)时,返回1。当绳子分段为f(3)时,返回2。
设置最大结果存储数组max_array用于存储f(n)->max_array[n]此时能取到的最大值,之后利用指针p对数组进行切分,一切为2。最大值赋值给max_array[n]
def cut_rope(n):
if n < 2:
return 0
if n == 2:
return 1
if n == 3:
return 2
max_array = [0, 1, 2, 3]
for i in range(4, n+1):
p = i-1
max = 0
while p > 0:
if max_array[p] * max_array[i-p] > max:
max = max_array[p] * max_array[i-p]
p -= 1
max_array.append(max)
return max_array[n]