假设我们有一个数字n,我们必须找到两个或多个数字,使得它们的和等于n,并且这些数字的乘积最大,我们必须找到乘积。
因此,如果输入类似于n = 12,则输出将为81,因为3 + 3 + 3 + 3 = 12且3 * 3 * 3 * 3 = 81。
为了解决这个问题,我们将遵循以下步骤-
定义一个功能dp()
。这将花费n
如果n等于0,则
返回1
回答:= 0
对于介于1到n + 1的i
ans:= ans和(i * dp(n − i))的最大值
返回ans
从主要方法中,执行以下操作-
返回dp(n)
让我们看下面的实现以更好地理解-
class Solution: def solve(self, n): def dp(n): if n == 0: return 1 ans = 0 for i in range(1, n + 1): ans = max(ans, i * dp(n - i)) return ans return dp(n) ob1 = Solution()print(ob1.solve(12))
12
输出结果
81