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

पायथन में दो गैर-अतिव्यापी उप-सूचियों का अधिकतम योग खोजने का कार्यक्रम

मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक और दो मान x और y कहते हैं, हमें दो गैर-अतिव्यापी उप-सूचियों का अधिकतम योग संख्याओं में खोजना होगा जिनकी लंबाई x और y है।

इसलिए, यदि इनपुट अंकों की तरह है =[3, 2, 10, -2, 7, 6] x =3 y =1, तो आउटपुट 22 होगा, लंबाई 3 के साथ सबलिस्ट के रूप में हम [3, 2, 10] और दूसरे के लिए हम [7] का चयन करते हैं।

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

  • P :=एकल तत्व 0 के साथ एक सूची
  • ए में प्रत्येक एक्स के लिए, करें
      P के अंत में
    • सम्मिलित करें (P + x का अंतिम तत्व)
  • फ़ंक्शन को हल करें() परिभाषित करें। इसमें len1, len2 लगेगा
  • Q:=तत्व के साथ एक सूची (P[i + len1] - P[i]) प्रत्येक i के लिए 0 से लेकर P - len1 के आकार तक
  • उपसर्ग :=Q की एक प्रति
  • मैं के लिए 0 से उपसर्ग के आकार के लिए - 1, do
    • उपसर्ग[i + 1] :=अधिकतम उपसर्ग[i + 1] और उपसर्ग[i]
  • उत्तर:=-अनंत
  • i के लिए len1 से लेकर P - len2 के आकार तक के लिए
    • बाएं:=उपसर्ग[i - len1]
    • दाएं:=P[i + len2] - P[i]
    • उत्तर:=अधिकतम उत्तर और (बाएं + दाएं)
  • वापसी उत्तर
  • मुख्य विधि से निम्न कार्य करें -
  • अधिकतम हल करें(len1, len2) , हल करें(len2, len1)

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

class Solution:
   def solve(self, A, len1, len2):
      P = [0]
      for x in A:
         P.append(P[-1] + x)
      def solve(len1, len2):
         Q = [P[i + len1] - P[i] for i in range(len(P) - len1)]
         prefix = Q[:]
         for i in range(len(prefix) - 1):
            prefix[i + 1] = max(prefix[i + 1], prefix[i])
            ans = float("-inf")
            for i in range(len1, len(P) - len2):
               left = prefix[i - len1]
               right = P[i + len2] - P[i]
            ans = max(ans, left + right)
            return ans
         return max(solve(len1, len2), solve(len2, len1))
ob = Solution()
nums = [3, 2, 10, -2, 7, 6]
x = 3
y = 1
print(ob.solve(nums, x, y))

इनपुट

[3, 2, 10, -2, 7, 6], 3, 1

आउटपुट

22

  1. पायथन में एक पेड़ के गैर-आसन्न नोड्स की अधिकतम राशि खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें उन मानों का अधिकतम योग ज्ञात करना होगा जो प्राप्त किए जा सकते हैं, कोई भी दो मान बच्चे के आसन्न माता-पिता नहीं हो सकते हैं। तो, अगर इनपुट पसंद है तो आउटपुट 17 होगा क्योंकि 10, 4, 3 एक दूसरे से सटे नहीं हैं। इसे हल करने के लिए, हम इन चरणों का पालन क

  1. पायथन में सभी सन्निहित उपन्यासकारों के योग का योग खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, अब प्रत्येक सन्निहित उप-सरणी पर विचार करें। इनमें से प्रत्येक उप-सरणी का योग करें और इन सभी मानों का योग लौटाएं। अंत में, परिणाम को 10 ** 9 + 7 से संशोधित करें। इसलिए, यदि इनपुट संख्या =[3, 4, 6] की तरह है, तो आउटपुट 43 होगा, क्यों

  1. पायथन प्रोग्राम यह पता लगाने के लिए कि क्या कोई दो की शक्ति नहीं है

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक नंबर दिया गया है, हमें यह जांचना होगा कि संख्या दो की शक्ति है या नहीं। जैसा कि नीचे चर्चा की गई है, हम दो दृष्टिकोणों का उपयोग करके इसे हल कर सकते हैं। दृष्टिकोण 1:शक्ति प्राप्त करने के लिए आधार 2 पर दिए गए