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

পাইথনে স্ট্যাকের তালিকা থেকে k উপাদান পপ করে সর্বোচ্চ সমষ্টি খুঁজে বের করার প্রোগ্রাম


ধরা যাক stacks নামক একটি স্ট্যাকের তালিকা এবং একটি পূর্ণসংখ্যা k আছে। যেকোনো স্ট্যাক থেকে মোট kটি উপাদান পপ করে সর্বোচ্চ সম্ভাব্য সমষ্টি বের করতে হবে।

উদাহরণ: stacks = [[50, -4, -15], [2], [6, 7, 8]], k = 4 হলে আউটপুট 39, কারণ প্রথম স্ট্যাক থেকে ৩টি এবং শেষ স্ট্যাক থেকে ১টি পপ করলে -15 + -4 + 50 + 8 = 39।

সমাধানের ধাপসমূহ

  • rec(i, n) রিকার্সিভ ফাংশন সংজ্ঞায়িত করুন।
  • বেস কেস: n == k হলে 0, n > k হলে -inf, i == len(stacks) হলে -inf।
  • শেষ স্ট্যাক হলে প্রয়োজনীয় উপাদান নেইলে -inf, না হলে শেষ needed উপাদানগুলোর সমষ্টি।
  • প্রতিটি স্ট্যাকে ভিন্ন সংখ্যক উপাদান পপ করে রিকার্সিভলি সর্বোচ্চ সমষ্টি বের করুন।
  • মূল মেথড থেকে rec(0, 0) কল করুন।

উদাহরণ কোড

import math
class Solution:
    def solve(self, stacks, k):
        def rec(i, n):
            if n == k:
                return 0
            if n > k:
                return -math.inf
            if i == len(stacks):
                return -math.inf
            if i == len(stacks) - 1:
                needed = k - n
                if needed > len(stacks[i]):
                    return -math.inf
                else:
                    return sum(stacks[i][-needed:])
            res, su = -math.inf, 0
            for sti in range(len(stacks[i]) - 1, -1, -1):
                su += stacks[i][sti]
                localres = su + rec(i + 1, n + len(stacks[i]) - sti)
                res = max(res, localres)
            return max(res, rec(i + 1, n))
        return rec(0, 0)

ob = Solution()
stacks = [
    [50, -4, -15],
    [2],
    [6, 7, 8]
]
k = 4
print(ob.solve(stacks, k))

ইনপুট

[[50, -4, -15],[2],[6, 7, 8]], 4

আউটপুট

39
  1. পাইথন প্রোগ্রাম লিস্টের উপাদানগুলোর যোগফল বের করা

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

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

  4. পাইথনে লিস্ট থেকে N বড় এলিমেন্ট বের করা