问题描述
有一个整数n,将n分解成若干个不同自然数之和,问如何分解能使这些数的乘积最大,输出这个乘积m
动态规划
根据题意,对于一个整数n,必然存在一个整数x,使得从n中分解出整数x可以使其最后获得最大乘积,这要求对n-x的分解也是最优解。我们用dp[i][j]表示从整数i分解出整数j的这种情况下,能达到的最大乘积。那么dp[i][j]可以递归的定义为
dp[i][j]={
dp[i][j]=i i=jdp[i][j]=maxdp[i−j][k]∗j j<=i且1<=k<=i−j dp[i][j] = \begin{cases} dp[i][j] = i\ \ \ \ \ \ \ \ \ \ \ \ \ i = j \\ dp[i][j] = \max {dp[i-j][k] * j} \ \ \ \ \ \ j <= i 且 1<=k<=i-j\\ \end{cases} dp[i][j]={
dp[i][j]