ধরুন আমাদের কাছে একটি স্বতন্ত্র সংখ্যার তালিকা আছে যাকে nums বলা হয় এবং আরেকটি সংখ্যা k, আমাদেরকে স্বতন্ত্র সংমিশ্রণের সংখ্যা খুঁজে বের করতে হবে যার যোগফল k পর্যন্ত। সংমিশ্রণ তৈরি করার সময় আপনি সংখ্যাগুলি পুনরায় ব্যবহার করতে পারেন৷
সুতরাং, ইনপুট যদি nums =[2, 4, 5] k =4 এর মত হয়, তাহলে আউটপুট হবে 2, কারণ আমরা [2, 2] এবং [4] এর মত দুটি গ্রুপ তৈরি করতে পারি।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- টেবিল :=k + 1 আকারের একটি তালিকা এবং 0 দিয়ে পূরণ করুন
- টেবিল[0] :=1
- প্রতিটি সংখ্যার জন্য, করুন
- এর জন্য i num থেকে k রেঞ্জে, কর
- টেবিল[i] :=টেবিল[i] + টেবিল[i - সংখ্যা]
- এর জন্য i num থেকে k রেঞ্জে, কর
- রিটার্ন টেবিল[k]
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ কোড
class Solution: def solve(self, nums, k): table = [1] + [0] * k for num in nums: for i in range(num, k + 1): table[i] += table[i - num] return table[k] ob = Solution() nums = [2, 4, 5] k = 4 print(ob.solve(nums, k))
ইনপুট
[2, 4, 5], 4
আউটপুট
2