'''思路:
1.明确dp[i]含义:指示得到的最大乘积
2.初始化:求最大乘积值时dp【i】当其为0,1时无意义
3.确定遍历范围:从第三个开始,遍历n-1个元素
4.找到递推公式:分解整数得到的乘积(i-j)*j即为乘积值
5.返回最大乘积值
'''
class Solution:
def interBreak(self,n):
dp=[0]*(n+1)#初始化数组,保证数组每个元素均为零
dp[2]=1#初始化0,1都没意义,
for i in range(3,n+1):#确定遍历范围:n-1个元素
for j in range(1,i//2+1):#j的遍历范围来说,当j==n/2时,i==j,此时最大乘积值不明确。
dp[i]=max(dp[i],(i-j)*j,dp[i-j]*j)#递推公式,从dp[i],(i-j)*j,dp[i-j]*j中选出最大值即为最大乘积值。
return dp[n]#返回最大乘积值
#测试
r=Solution()
print(r.interBreak(10))