मान लीजिए कि हमारे पास एक संख्या 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 के लिए, करें
-
उत्तर :=अधिकतम उत्तर और (i * dp(n - i))
-
-
वापसी उत्तर
-
मुख्य विधि से, निम्न कार्य करें -
-
वापसी डीपी (एन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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