কম্পিউটার টিউটোরিয়াল

পাইথনে কমপক্ষে একটি এলিমেন্ট নিয়ে ন্যূনতম যোগফল সাবসিকোয়েন্স বের করার প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে একটি সংখ্যার তালিকা nums আছে। আমাদের কাজ হল একটি ন্যূনতম যোগফল বিশিষ্ট সাবসিকোয়েন্স বের করা যাতে المستمر তিনটি এলিমেন্টের যেকোনো গ্রুপ থেকে কমপক্ষে একটি সংখ্যা নির্বাচন করা হয়। যদি তালিকার দৈর্ঘ্য ৩-এর চেয়ে কম হয়, তবে তবুও একটি সংখ্যা নির্বাচন করতে হবে।

উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [2, 3, 4, 5, 6, 7], তবে আউটপুট হবে 7, কারণ আমরা ২ এবং ৫ কে নির্বাচন করতে পারি।

সমাধানের ধাপসমূহ:
  • n := len(nums)
  • যদি n == 0 হয়, তবে 0 রিটার্ন করুন।
  • যদি n == 1 হয়, তবে nums[0] রিটার্ন করুন।
  • যদি n == 2 হয়, তবে min(nums[0], nums[1]) রিটার্ন করুন।
  • table := আকার n এমন একটি তালিকা ০ দিয়ে ভরা।
  • table[0] := nums[0], table[1] := nums[1], table[2] := nums[2]
  • i কে ৩ থেকে 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])
  • res রিটার্ন করুন।
উদাহরণ কোড
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
  1. পাইথনে ট্রি থেকে একটি এজ কাট করে দুটি সাবট্রিের নোড ভ্যালু সামের পার্থক্য মিনিমাইজ করা

  2. পাইথনে বাইনারি ট্রির সব নোডের মান যোগফল বের করা

  3. পাইথনে লিস্টের এলিমেন্টগুলোর যোগফল বের করা

  4. পাইথনে লিস্ট থেকে ডুপ্লিকেট এলিমেন্ট সরানো