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

পাইথনে সার্কুলার লিস্টে নন-এডজেসেন্ট এলিমেন্টের সর্বোচ্চ যোগফল বের করার প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে একটি সংখ্যার তালিকা nums আছে যেটি একটি সার্কুলার লিস্টকে প্রতিনিধিত্ব করে। আমাদের কাজ হল নন-এডজেসেন্ট (পাশাপাশি নয় এমন) সংখ্যাগুলোর সর্বোচ্চ যোগফল বের করা।

উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [10, 3, 4, 8], তবে আউটপুট হবে 14, কারণ আমরা ১০ এবং ৪ নিতে পারি। ১০ এবং ৮ নেওয়া যাবে না কারণ সার্কুলার লিস্টে তারা এডজেসেন্ট।

সমাধানের ধাপসমূহ:
  • n := len(nums)
  • nums1 := nums[0:n-1] (শেষ এলিমেন্ট বাদ)
  • nums2 := nums[1:] (প্রথম এলিমেন্ট বাদ)
  • একটি f() ফাংশন ডিফাইন করুন যা i নেবে:
    • যদি i >= len(nums1) হয়, তবে 0 রিটার্ন করুন।
    • max(nums1[i] + f(i+2), f(i+1)) রিটার্ন করুন।
  • একটি g() ফাংশন ডিফাইন করুন যা j নেবে:
    • যদি j >= len(nums2) হয়, তবে 0 রিটার্ন করুন।
    • max(nums2[j] + g(j+2), g(j+1)) রিটার্ন করুন।
  • মূল মেথড থেকে max(f(0), g(0)) রিটার্ন করুন।
উদাহরণ কোড
class Solution:
    def solve(self, nums):
        n = len(nums)
        nums1 = nums[:n-1]
        nums2 = nums[1:]
        def f(i):
            if i >= len(nums1):
                return 0
            return max(nums1[i] + f(i+2), f(i+1))
        def g(j):
            if j >= len(nums2):
                return 0
            return max(nums2[j] + g(j+2), g(j+1))
        return max(f(0), g(0))

ob = Solution()
nums = [10, 3, 4, 8]
print(ob.solve(nums))
ইনপুট
[10, 3, 4, 8]
আউটপুট
14
  1. পাইথনে বাইনারি ট্রির সব নোডের মান যোগফল বের করা

  2. পাইথনে ট্রির নন-এডজেসেন্ট নোডের সর্বোচ্চ যোগফল খুঁজে বের করার প্রোগ্রাম

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

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