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

पायथन में हटाने से अधिकतम अंक ज्ञात करने का प्रोग्राम


मान लीजिए हमें धनात्मक संख्याओं की एक सूची दी गई है। हम किसी भी सन्निहित सबलिस्ट को हटा सकते हैं जिसकी लंबाई t है और सभी मान समान हैं, और t*t अंक प्राप्त कर सकते हैं। हम इसे तब तक कितनी भी बार कर सकते हैं जब तक सूची खाली न हो जाए। हमें अधिकतम अंक ज्ञात करने हैं।

उदाहरण के लिए, nums = [4,4,6,4,4] के लिए आउटपुट 17 होगा (पहले 6 को हटाएं -> 1 अंक, फिर चार 4 को एक साथ हटाएं -> 16 अंक, कुल 17)।

एल्गोरिदम (DP)

  • dp(left, right, t) फ़ंक्शन परिभाषित करें:
    • यदि left > right, तो 0 वापस करें
    • num = nums[left], left2 = left
    • जब left2 < right और nums[left2+1] == num: left2++
    • t += left2 - left + 1, left = left2 + 1
    • points = t**2 + dp(left, right, 0)
    • mid = left से right तक:
      • यदि nums[mid] == num: points = max(points, dp(left, mid-1, 0) + dp(mid, right, t))
    • points वापस करें
  • मुख्य फ़ंक्शन से dp(0, len(nums)-1, 0) वापस करें

उदाहरण

class Solution:
    def solve(self, nums):
        def dp(left, right, t):
            if left > right: return 0
            num = nums[left]
            left2 = left
            while left2 < right and nums[left2+1] == num:
                left2 += 1
            t += left2 - left + 1
            left = left2 + 1
            points = t**2 + dp(left, right, 0)
            for mid in range(left, right+1):
                if nums[mid] == num:
                    points = max(points, dp(left, mid-1, 0) + dp(mid, right, t))
            return points
        return dp(0, len(nums)-1, 0)

ob1 = Solution()
print(ob1.solve([4,4,6,4,4]))

इनपुट

[4, 4, 6, 4, 4]

आउटपुट

17
  1. पायथन में सब-ट्री के नोड मानों के योग से न्यूनतम मान खोजने का प्रोग्राम पायथन में सब-ट्री के नोड मानों के योग से न्यूनतम मान खोजने का प्रोग्राम

    मान लीजिए, हमारे पास एक ट्री है जिसके सभी नोड्स 1 से n तक संख्याबद्ध हैं। प्रत्येक नोड में एक पूर्णांक मान होता है। अब यदि हम ट्री से एक किनारा हटाते हैं, तो दोनों सब-ट्री के नोड मानों के योग में अंतर न्यूनतम होना चाहिए। हमें ऐसे सब-ट्री के बीच न्यूनतम अंतर पता लगाना और लौटाना है। ट्री को हमें किनार

  1. पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्ष हैं जो 0 से n-1 तक क्रमांकित हैं। ग्राफ अनिर्देशित है और प्रत्येक किनारे का एक भार है। ग्राफ में तीन प्रकार के भार हो सकते हैं और प्रत्येक भार एक विशेष कार्य को दर्शाता है। दो लोग हैं जो ग्राफ को पार कर सकते हैं, अर्थात् जैक और केसी। जैक ग्राफ को

  1. पायथन में सभी संभावित वैध पथों से अधिकतम स्कोर ज्ञात करने का प्रोग्राम पायथन में सभी संभावित वैध पथों से अधिकतम स्कोर ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास दो सरणियाँ nums1 और nums2 हैं। एक वैध पथ को इस प्रकार परिभाषित किया गया है: nums1 या nums2 को पार करने के लिए चुनें (सूचकांक-0 से)। सरणी को बाएं से दाएं पार करें। अब, यदि हम किसी ऐसे मान से गुजर रहे हैं जो nums1 और nums2 दोनों में मौजूद है, तो हम दूसरे सरणी पर पथ बदल सकते हैं।