একটি সংখ্যা n দেওয়া আছে। দুটি বা অধিক সংখ্যা খুঁজে বের করতে হবে যাদের যোগফল n হয় এবং গুণফল সর্বোচ্চ হয়। সেই সর্বোচ্চ গুণফল ফেরত দিতে হবে।
উদাহরণ: n = 12 হলে আউটপুট ৮১, কারণ 3+3+3+3=12 এবং 3*3*3*3=81।
সমাধানের ধাপসমূহ
- ডাইনামিক প্রোগ্রামিং ফাংশন dp(n) সংজ্ঞায়িত করুন
- যদি n == 0 হয় তবে 1 ফেরত দিন
- i = 1 থেকে n পর্যন্ত ans = max(ans, i * dp(n-i))
- ans ফেরত দিন
উদাহরণ কোড
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