思路:
求一个整数,拆分后相乘的最大值。
定义dp数组为,dp[i]为将数i进行拆分后的相乘最大值。数i可以拆成两个,也可以拆成三个、四个......
拆成两个数:j+(i-j)
拆成多个数:j+dp[i-j]
状态转移dp[i]=max(dp[i],j*(i-j),j*dp[i-j])
def IntegerBreak(n):
dp=[0]*(n+1)
dp[2]=1
for i in range(1,n+1):
for j in range(1,i):
dp[i]=max(dp[i],j*(i-j),j*dp[i-j]) #和当前的dp[i]、j*(i-j),j*dp[i-j]比较
print(dp[n])
return
def main():
n=int(input())
IntegerBreak(n)
if __name__=="__main__":
main()