题解 | #剪绳子#
剪绳子
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]