मान लीजिए हमारे पास एक संख्या 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