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

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

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

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

  • dp नामक A के समान लंबाई की एक सरणी बनाएं, और इसे 0 से भरें
  • i के लिए 0 से A की लंबाई - 1 तक की रेंज में
    • dp[i] = A[i] + dp[i - 1] यदि i - 1 >= 0 अन्यथा 0
    • temp := A[i]
    • j के लिए 1 से k - 1 तक की रेंज में
      • यदि i - j >= 0
        • index := i - j
        • temp := temp और A[i - j] का अधिकतम
        • यदि index - 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. पायथन प्रोग्राम: सरणी रोटेशन पायथन प्रोग्राम: सरणी रोटेशन

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक टेक्स्ट और एक पैटर्न दिया गया है, हमें पैटर्न और उसके क्रमपरिवर्तन (या एनाग्राम) की सभी घटनाओं को टेक्स्ट में प्रिंट करना है। उदाहरण # अधिकतम मान MAX = 300 # तुलना def compare(arr1, arr2): for i in range(MAX):

  1. पायथन प्रोग्राम: ऐरे का योग ढूंढें पायथन प्रोग्राम: ऐरे का योग ढूंढें

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

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

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में इंसर्शन सॉर्ट के कार्यान्वयन के बारे में जानेंगे।एल्गोरिदम1. प्रत्येक पुनरावृत्ति पर सॉर्टेड सरणी को बढ़ाते हुए इनपुट तत्वों पर पुनरावृति करें।2. वर्तमान तत्व की तुलना सॉर्टेड सरणी में उपलब्ध सबसे बड़े मान से करें।3. यदि वर्तमान तत्व बड़ा है, तो इ