Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में ढेर की सूची से पॉप किए गए k तत्वों की अधिकतम राशि खोजने का कार्यक्रम

मान लीजिए कि हमारे पास ढेर की एक सूची है और एक पूर्णांक k है। हमें स्टैक के किसी भी संयोजन से बिल्कुल k तत्वों को पॉप करने से प्राप्त किया जा सकने वाला अधिकतम संभव योग खोजना होगा।

इसलिए, यदि इनपुट स्टैक की तरह है =[[50, -4, -15], [2], [6, 7, 8]], k =4, तो आउटपुट 39 होगा, क्योंकि हम सभी को पॉप ऑफ कर सकते हैं -15 + -4 + 50 + 8 =39 प्राप्त करने के लिए पहले स्टैक से 3 तत्व और अंतिम स्टैक के अंतिम तत्व को पॉप करें।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • फ़ंक्शन rec() को परिभाषित करें। इसमें मुझे, n

    . लगेगा
  • यदि n, k के समान है, तो

    • वापसी 0

  • यदि n> k, तो

    • नकारात्मक अनंत लौटाएं

  • अगर मैं ढेर की गिनती के समान हूं, तो

    • नकारात्मक अनंत लौटाएं

  • अगर मैं स्टैक -1 की गिनती के समान हूं, तो

    • आवश्यक :=k - n

    • यदि आवश्यक हो> ढेर की तत्व गणना [i], फिर

      • नकारात्मक अनंत लौटाएं

    • अन्यथा,

      • स्टैक के तत्वों की वापसी का योग [i] तत्वों की अंतिम आवश्यक संख्या

  • रेस:=-math.inf, सु:=0

  • ढेर के रेंज आकार में sti के लिए[i] - 1 से 0,

    1 से घटाएं
    • सु:=सु + ढेर [i, sti]

    • स्थानीय:=सु + आरईसी (i + 1, n + ढेर का आकार [i] - sti)

    • रेस :=अधिकतम रेस और लोकल

  • अधिकतम res और rec(i + 1, n)

    . लौटाएं
  • मुख्य विधि से कॉल 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. एक सूची का संचयी योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें संचयी राशि के साथ एक सूची बनानी होगी। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # cumulative sum def Cumulative(l):    new = []    cumsum = 0   &nb

  1. सूची में तत्वों का योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक इनपुट के रूप में एक सूची को देखते हुए, हमें दी गई सूची के योग की गणना करने की आवश्यकता है। यहां हमारे पास विचार करने के लिए दो दृष्टिकोण हैं यानी अंतर्निहित फ़ंक्शन का उपयोग करना और ब्रूट-फोर्

  1. सूची से एन सबसे बड़े तत्वों को खोजने के लिए पायथन कार्यक्रम

    एक पूर्णांक सूची को देखते हुए, हमारा कार्य सूची में N सबसे बड़े तत्वों को खोजना है। उदाहरण Input : [40, 5, 10, 20, 9] N = 2 Output: [40, 20] एल्गोरिदम Step1: Input an integer list and the number of largest number. Step2: First traverse the list up to N times. Step3: Each traverse find the largest va