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

पायथन में अधिकतम योग के लिए विभाजन सरणी

मान लीजिए कि हमारे पास एक पूर्णांक सरणी ए है, हमें सरणी को अधिकतम के (सन्निहित) लंबाई के उप-सरणी में विभाजित करना होगा। विभाजन के बाद, प्रत्येक उप-सरणी का मान उस उप-सरणी का अधिकतम मान बनने के लिए बदल जाता है। हमें विभाजन के बाद दिए गए सरणी का सबसे बड़ा योग ज्ञात करना है। तो अगर इनपुट [1, 15, 7, 9, 2, 5, 10] और के =3 जैसा है, तो आउटपुट 84 होगा। ऐसा इसलिए है क्योंकि सरणी [15, 15, 15, 9, 10, 10] बन जाती है। , 10]

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

  • एक सरणी dp लंबाई A के समान बनाएं, और इसे 0 से भरें
  • मैं के लिए 0 से ए की लंबाई तक - 1
    • dp[i] =A[i] + dp[i - 1] अगर i – 1>=0 अन्यथा 0
    • अस्थायी:=ए[i]
    • जे के लिए 1 से के - 1 की सीमा में
      • अगर मैं - जे>=0
        • सूचकांक :=i – j
        • अस्थायी:=अधिकतम तापमान और A[i - j]
        • यदि अनुक्रमणिका – 1>=0, तो
          • dp[i] :=अधिकतम dp[i] और (temp*(i – index + 1) + dp[index - 1])
        • अन्यथा dp[i] :=अधिकतम dp[i] और 0
  • dp का अंतिम तत्व लौटाएं

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

उदाहरण

class Solution(object):
   def maxSumAfterPartitioning(self, A, K):
      dp = [0 for i in range(len(A))]
      for i in range(len(A)):
         dp[i] = A[i] + (dp[i-1] if i-1>=0 else 0)
         temp = A[i]
         for j in range(1,K):
            if i-j>=0:
               index = i-j
               temp = max(temp,A[i-j])
               dp[i] = max(dp[i],temp*(i-index+1) + (dp[index-1] if index-1 >=0 else 0))
      return dp[-1]
ob = Solution()
print(ob.maxSumAfterPartitioning([1,15,7,9,2,5,10],3))

इनपुट

[1,15,7,9,2,5,10]
3

आउटपुट

84

  1. सरणी रोटेशन के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - एक टेक्स्ट और एक पैटर्न को देखते हुए, हमें टेक्स्ट में पैटर्न और उसके क्रमपरिवर्तन (या विपर्यय) की सभी घटनाओं को प्रिंट करना होगा। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # maximum value MAX = 300 #

  1. सरणी का योग खोजने के लिए पायथन कार्यक्रम

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

  1. इंसर्शन सॉर्ट के लिए पायथन प्रोग्राम

    इस लेख में, हम पायथन 3.x में इंसर्शन सॉर्ट के कार्यान्वयन के बारे में जानेंगे। या पहले। एल्गोरिदम 1. Iterate over the input elements by growing the sorted array at each iteration. 2. Compare the current element with the largest value available in the sorted array. 3. If the current element is greate