剑指 Offer 14- I. 剪绳子
(1)DFS超时
class Solution:
def cuttingRope(self, n: int) -> int:
def dfs(chengji,changdu):
if changdu==n:
ans.append(chengji)
if changdu<n:
for j in range(1,n):
dfs(chengji*j,changdu+j)
ans=[]
dfs(1,0)
# print(ans)
return max(ans)
(2)动态规划
class Solution:
def cuttingRope(self, n: int) -> int:
dp = [0] * (n + 1)
dp[2] = 1
for i in range(3, n + 1):
for j in range(2, 4):
dp[i] = max(dp[i], max(j * (i - j), j * dp[i - j]))
return dp[n]