class Solution:
def integerBreak(self, n: int) -> int:
dp=[0]*(n+1)
dp[2]=1
for i in range(3,n+1):
for j in range(1,i):
dp[i]=max(dp[i],max((j*(i-j),dp[i-j]*j)))
return dp[n]
'''简单理解为,j*(i-j)就是把i分为2个数,dp[i-j]*j就是把i分成3个或者3个以上的数相乘。'''
数学分析法:
class Solution:
def integerBreak(self, n: int) -> int:
if n==2:return 1
if n==3:return 2
if n==4:return 4
res=1
while n>4:
res*=3
n-=3
res*=n
return res