Python程式:求和為給定值的幾個數字的乘積


假設我們有一個數字 n,我們需要找到兩個或多個數字,它們的和等於 n,並且這些數字的乘積最大化,我們需要找到這個乘積。

因此,如果輸入為 n = 12,則輸出將為 81,因為 3 + 3 + 3 + 3 = 12 且 3 * 3 * 3 * 3 = 81。

為了解決這個問題,我們將遵循以下步驟:

  • 定義一個函式 dp()。它將接收 n 作為輸入。

  • 如果 n 等於 0,則

    • 返回 1

  • ans := 0

  • 對於 i 從 1 到 n + 1,執行以下操作:

    • 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

更新於: 2020年10月21日

181 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告