# 剪绳子,每段都是整数
class Solution:
def function(self, n):
# 不能动归的情况
if n == 0:
return 0
if n == 1:
return 0
if n == 2:
return 1
if n == 3:
return 2
# 动归部分
dp = [0]*(n+1)
dp[0] = 0
dp[1] = 1
dp[2] = 2
dp[3] = 3 # 不切即最大的部分
# 可以切分的部分从4开始
for i in range(4, n+1):
max_ = 0
for j in range(1, i//2+1):
product = dp[j]*dp[i-j]
if max_ < product:
max_ = product
dp[i] = max_
return dp[n]
if __name__ == '__main__':
s = Solution()
print(s.function(5))
剑指offer:013剪绳子
最新推荐文章于 2022-06-24 10:17:37 发布