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

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


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

इसलिए, यदि इनपुट है n = 7, cuts = [5,1,4,3], तो आउटपुट 16 होगा क्योंकि यदि हम उन्हें [3,5,1,4] की तरह क्रमबद्ध करते हैं, तो पहले लंबाई 7 में से 3 पर काटते हैं, इसलिए लागत 7 है, फिर हमारे पास लंबाई 3 और 4 के दो भाग हैं, फिर 5 पर काटते हैं, इसलिए लागत 4 है, अब तक कुल 7+4=11 है, फिर आकार 2 की छड़ी से 4 पर काटते हैं, इसलिए कुल लागत 7+4+2 = 13, फिर अंत में 3 पर काटते हैं इसलिए लागत 3 है, और अंतिम लागत 7+4+2+3 = 16।

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

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

  • cuts := एक सूची जहां cuts में तत्व क्रमबद्ध क्रम में हों, और शुरुआत में 0 डालें और अंत में n डालें

  • m := cuts का आकार

  • cost := m x m आकार का एक वर्ग मैट्रिक्स जिसे 0 से भरा गया हो

  • k को 2 से m - 1 तक के लिए, करें

    • i को 0 से m - 1 तक के लिए, करें

      • j := i + k

      • यदि j >= m, तो

        • अगली पुनरावृत्ति के लिए जाएं

      • cost[i, j] = (cuts[j] - cuts[i]) + सभी s के लिए (cost[i, s] + cost[s, j]) का न्यूनतम जहां s range(i+1, j-1) में है

  • cost[0, m-1] वापस करें

उदाहरण

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

def solve(n, cuts):
    cuts = [0] + sorted(cuts) + [n]
    m = len(cuts)
    cost = [[0]*m for _ in range(m)]
    for k in range(2, m):
        for i in range(m):
            j = i + k
            if j >= m:
                continue
            cost[i][j] = (cuts[j]-cuts[i]) + min(cost[i][s] + cost[s][j] for s in range(i+1, j))
    return cost[0][m-1]

n = 7
cuts = [5,1,4,3]
print(solve(n, cuts))

इनपुट

7, [5,1,4,3]

आउटपुट

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

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

  1. - Python में घरों को रंगने की न्यूनतम लागत खोजने का प्रोग्राम

    मान लीजिए आकार m का एक ऐरे है, जो एक छोटे शहर में m घरों को दर्शाता है, प्रत्येक घर को n रंगों में से एक से रंगा जाना चाहिए (रंग 1 से n तक लेबल किए गए हैं), और कुछ घर पहले से ही रंगे हुए हैं, इसलिए उन्हें फिर से रंगने की जरूरत नहीं है। जिन घरों का रंग समान है उन्हें नेबरहुड कहा जाता है। हमारे पास ऐ

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

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