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

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

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

इसलिए, यदि इनपुट n =7, कट्स =[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.

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

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

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

  • मी :=कटौती का आकार

  • लागत:=m x m आकार का एक वर्ग मैट्रिक्स बनाएं और 0 से भरें

  • k के लिए 2 से m-1 की सीमा में, करें

    • मैं के लिए 0 से एम -1 की सीमा में, करो

      • जे:=आई + के

      • अगर j>=मी, तो

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

      • लागत [i, j] =(कटौती [j] - कटौती [i]) + न्यूनतम (लागत [i, s] + लागत [s, j] सभी श्रेणी के लिए (i+1, j-1))

    • वापसी लागत[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 और एक सरणी है जिसे कट कहा जाता है। मान लीजिए कि लंबाई n इकाइयों की लकड़ी की छड़ी है। छड़ी को 0 से n तक लेबल किया गया है। यहां कटौती [i] उस स्थिति का प्रतिनिधित्व करती है जहां हम कटौती कर सकते हैं। हमें कटौती क्रम में करनी चाहिए, लेकिन हम कटौती के क्रम को अपनी इच्छानुस

  1. पायथन में घरों की पेंटिंग के लिए न्यूनतम लागत खोजने का कार्यक्रम

    मान लीजिए कि आकार m की एक सरणी है, एक छोटे से शहर में m घरों का प्रतिनिधित्व करता है, प्रत्येक घर को n रंगों में से एक के साथ चित्रित किया जाना चाहिए (रंगों को 1 से n तक लेबल किया गया है), और कुछ घर पहले से ही चित्रित हैं, इसलिए कोई आवश्यकता नहीं है फिर से पेंट करें। वे घर जो एक ही रंग से रंगे होते

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

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