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

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


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

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

इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे (रिकर्सन + मेमोइज़ेशन):

  • rec(i, n) फ़ंक्शन परिभाषित करें जो i (वर्तमान स्टैक इंडेक्स) और n (अब तक पॉप किए गए तत्वों की संख्या) लेता है।

  • यदि n == k, तो 0 लौटाएं।

  • यदि n > k, तो -inf लौटाएं।

  • यदि i == len(stacks), तो -inf लौटाएं।

  • यदि i == len(stacks) - 1 (अंतिम स्टैक):

    • needed := k - n।

    • यदि needed > len(stacks[i]), तो -inf लौटाएं।

    • अन्यथा, stacks[i] के अंतिम needed तत्वों का योग लौटाएं।

  • res := -inf, su := 0।

  • sti को len(stacks[i])-1 से 0 तक घटाते हुए:

    • su += stacks[i][sti]।

    • localres := su + rec(i+1, n + len(stacks[i]) - sti)।

    • res = max(res, localres)।

  • max(res, rec(i+1, n)) लौटाएं।

उदाहरण

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. पायथन प्रोग्राम: लिस्ट का संचयी योग ज्ञात करें पायथन प्रोग्राम: लिस्ट का संचयी योग ज्ञात करें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक लिस्ट दी गई है, हमें संचयी योग के साथ एक लिस्ट बनानी है। उदाहरण # संचयी योग def Cumulative(l): new = [] cumsum = 0 for element in l: cumsum += element new.append(cumsum) return new # ड्राइवर

  1. पायथन प्रोग्राम: लिस्ट में एलिमेंट्स का योग ढूंढें पायथन प्रोग्राम: लिस्ट में एलिमेंट्स का योग ढूंढें

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

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

    एक पूर्णांक सूची दी गई है, हमारा कार्य सूची में N सबसे बड़े तत्व ढूंढना है। उदाहरण इनपुट : [40, 5, 10, 20, 9] N = 2 आउटपुट: [40, 20] एल्गोरिदम चरण 1: एक पूर्णांक सूची और सबसे बड़ी संख्या की संख्या इनपुट करें। चरण 2: पहले सूची को N बार पार करें। चरण 3: प्रत्येक पारगमन में सबसे बड़ा मान ढूंढें और इसे