题解 | #剪绳子#
剪绳子
https://www.nowcoder.com/practice/57d85990ba5b440ab888fc72b0751bf8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param number int整型
# @return int整型
# 动态规划思想,令dp[i]存放i能分解出的最大乘积
class Solution:
def cutRope(self , number: int) -> int:
# write code here
dp = [0]*(number+1)
if number <= 3:
return number - 1 # 绳子长小于等于3,算是特殊情况,不得不切分
else:
dp[1] = 1
dp[2] = 2
dp[3] = 3 # 如绳子长于3,那么3以下是不能切的,越切越小
for i in range(4, number+1):
for j in range(2, int(i/2)+1):
dp[i] = max(dp[i], dp[j]*dp[i-j]) # 比比怎么切,谁大
return dp[number]
美的集团公司福利 798人发布