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

पायथन में पेड़ों की ऊंचाई बढ़ाने की न्यूनतम लागत जहां कोई आसन्न पेड़ समान ऊंचाई का न हो


मान लीजिए हमारे पास heights नामक संख्याओं की एक सूची है जो पौधों की ऊंचाई दर्शाती है और हमारे पास costs नामक मानों की एक अन्य सूची है जो एक पौधे की ऊंचाई को एक से बढ़ाने के लिए आवश्यक कीमत दर्शाती है। हमें heights सूची में प्रत्येक ऊंचाई को आसन्न ऊंचाइयों से अलग बनाने की सबसे छोटी लागत ज्ञात करनी है।

इसलिए, यदि इनपुट heights = [3, 2, 2] costs = [2, 5, 3] जैसा है, तो आउटपुट 3 होगा, क्योंकि हम अंतिम ऊंचाई को 1 से बढ़ा सकते हैं, जिसकी लागत 3 है।

हल करने के चरण

  • dp() फ़ंक्शन परिभाषित करें। यह idx, l_height लेगा

    • यदि idx, heights के आकार - 1 के समान है, तो

      • 0 लौटाएं यदि heights[idx], l_height के समान नहीं है अन्यथा costs[idx]

    • ret := infinity

    • i के लिए 0 से 2 तक की रेंज में, करें

      • यदि heights[idx] + i, l_height के समान नहीं है, तो

        • ret := ret और dp(idx + 1, heights[idx] + i) + costs[idx] * i का न्यूनतम

    • ret लौटाएं

  • मुख्य विधि से dp(0, null) लौटाएं

उदाहरण

class Solution:
    def solve(self, heights, costs):
        def dp(idx, l_height):
            if idx == len(heights) - 1:
                return 0 if heights[idx] != l_height else costs[idx]
            ret = float("inf")
            for i in range(3):
                if heights[idx] + i != l_height:
                    ret = min(ret, dp(idx + 1, heights[idx] + i) + costs[idx] * i)
            return ret
        return dp(0, None)

ob = Solution()
heights = [3, 2, 2]
costs = [2, 5, 3]
print(ob.solve(heights, costs))

इनपुट

[3, 2, 2], [2, 5, 3]

आउटपुट

3
  1. Python में सभी बिंदुओं को जोड़ने की न्यूनतम लागत खोजने का प्रोग्राम Python में सभी बिंदुओं को जोड़ने की न्यूनतम लागत खोजने का प्रोग्राम

    मान लीजिए हमारे पास points नामक एक ऐरे है जिसमें कुछ पॉइंट्स (x, y) के रूप में हैं। अब दो पॉइंट्स (xi, yi) और (xj, yj) को जोड़ने की लागत उनके बीच की मैनहट्टन दूरी है, सूत्र है |xi - xj| + |yi - yj|। हमें सभी पॉइंट्स को जोड़ने की न्यूनतम लागत ढूंढनी है। उदाहरण के लिए, यदि इनपुट है points = [(0,0),(

  1. पायथन का उपयोग करके समान x या y निर्देशांक वाले निकटतम बिंदु को खोजने का प्रोग्राम पायथन का उपयोग करके समान x या y निर्देशांक वाले निकटतम बिंदु को खोजने का प्रोग्राम

    मान लीजिए हमारे पास pts नामक एक सरणी में बिंदुओं का एक समूह दिया गया है। हमारे पास एक अन्य बिंदु (x, y) भी है जो हमारा वर्तमान स्थान है। हम एक वैध बिंदु को इस प्रकार परिभाषित कर रहे हैं, एक बिंदु जो हमारे वर्तमान बिंदु के समान x-निर्देशांक या समान y-निर्देशांक साझा करता है। हमें अपने वर्तमान स्थान

  1. बाइनरी ट्री को रंगने की संभावना जांचने का पायथन प्रोग्राम जहां कोई आसन्न नोड्स समान रंग के न हों बाइनरी ट्री को रंगने की संभावना जांचने का पायथन प्रोग्राम जहां कोई आसन्न नोड्स समान रंग के न हों

    मान लीजिए हमारे पास एक बाइनरी ट्री है जहां प्रत्येक नोड का मान उसका रंग दर्शाता है। एक ट्री में अधिकतम 2 रंग होते हैं। हमें जांचना है कि क्या नोड्स के रंगों को किसी भी संख्या में स्वैप करके ऐसा करना संभव है कि कोई दो जुड़े हुए नोड्स का रंग समान न हो। उदाहरण के लिए, यदि इनपुट इस तरह है: तो आउटपुट T