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

Python में अधिकतम k स्टेप्स में अंतिम इंडेक्स तक पहुंचने की न्यूनतम लागत खोजने का प्रोग्राम


मान लीजिए हमारे पास nums नाम की संख्याओं की एक सूची है और एक अन्य मान k है। यहां nums[i] पर आइटम इंडेक्स i पर लैंड करने की लागत को दर्शाते हैं। यदि हम इंडेक्स 0 से शुरू करते हैं और nums के अंतिम इंडेक्स पर समाप्त होते हैं। प्रत्येक चरण में हम किसी स्थिति X से k स्टेप दूर तक किसी भी स्थिति पर कूद सकते हैं। हमें अंतिम इंडेक्स तक पहुंचने के लिए लागतों के योग को न्यूनतम करना है, तो न्यूनतम योग क्या होगा?

इसलिए, यदि इनपुट इस तरह है nums = [2, 3, 4, 5, 6] k = 2, तो आउटपुट 12 होगा, क्योंकि हम 2 + 4 + 6 चुनकर 12 की न्यूनतम लागत प्राप्त कर सकते हैं।

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

  • ans := 0
  • h := एक खाली हीप
  • i के लिए 0 से nums के आकार तक रेंज में, करें
    • val := 0
    • जब तक h खाली नहीं है, करें
      • [val, index] := h[0]
      • यदि index >= i - k, तो
        • लूप से बाहर आएं
      • अन्यथा,
        • हीप h से शीर्ष हटाएं
    • ans := nums[i] + val
    • पेयर (ans, i) को हीप h में डालें
  • ans लौटाएं

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

उदाहरण

from heapq import heappush, heappop
class Solution:
    def solve(self, nums, k):
        ans = 0
        h = []
        for i in range(len(nums)):
            val = 0
            while h:
                val, index = h[0]
                if index >= i - k:
                    break
                else:
                    heappop(h)
            ans = nums[i] + val
            heappush(h, (ans, i))
        return ans
ob = Solution()
nums = [2, 3, 4, 5, 6]
k = 2
print(ob.solve(nums, k))

इनपुट

[2, 3, 4, 5, 6], 2

आउटपुट

12
  1. पायथन में छड़ी काटने की न्यूनतम लागत ज्ञात करने का प्रोग्राम पायथन में छड़ी काटने की न्यूनतम लागत ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास एक मान n और cuts नामक एक सरणी है। मान लीजिए n इकाई लंबाई की एक लकड़ी की छड़ी है। छड़ी 0 से n तक लेबल की गई है। यहां cuts[i] एक स्थिति दर्शाता है जहां हम काट सकते हैं। हमें कटौती क्रम में करनी चाहिए, लेकिन हम कटौती के क्रम को अपनी इच्छानुसार बदल सकते हैं। यहां एक कटौती की लागत का

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

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

  1. पायथन में शतरंज के नाइट द्वारा टार्गेट पोजीशन तक पहुंचने के लिए न्यूनतम चालें खोजने का प्रोग्राम पायथन में शतरंज के नाइट द्वारा टार्गेट पोजीशन तक पहुंचने के लिए न्यूनतम चालें खोजने का प्रोग्राम

    मान लीजिए हमारे पास दो मान r और c हैं। यदि एक शतरंज नाइट अनंत बड़े शतरंज बोर्ड पर निर्देशांक (0,0) पर रखा गया है, तो हमें (r,c) स्थान तक पहुंचने के लिए न्यूनतम चालों की संख्या ढूंढनी है। नाइट शतरंज की तरह चलता है: दो वर्ग क्षैतिज और एक लंबवत, या दो लंबवत और एक क्षैतिज।उदाहरण के लिए, यदि इनपुट r=6, c