ধরুন আমাদের একটি সংখ্যা 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 * 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