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