สมมติว่าเรามีตัวเลข n เราต้องหาตัวเลขตั้งแต่สองตัวขึ้นไปที่ผลรวมของพวกมันเท่ากับ n และผลิตภัณฑ์ของตัวเลขเหล่านี้ถูกขยายให้ใหญ่สุด เราต้องหาผลคูณ
ดังนั้น หากอินพุตเท่ากับ n =12 เอาต์พุตจะเป็น 81 เช่น 3 + 3 + 3 + 3 =12 และ 3 * 3 * 3 * 3 =81
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดฟังก์ชัน dp() นี่จะใช้เวลา n
-
ถ้า n เท่ากับ 0 แล้ว
-
กลับ 1
-
-
ตอบ :=0
-
สำหรับผมอยู่ในช่วง 1 ถึง n + 1 ทำ
-
ans :=สูงสุดของ ans และ (i * dp(n - i))
-
-
กลับมาอีกครั้ง
-
จากวิธีหลัก ให้ทำดังนี้ −
-
กลับ 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