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

पायथन में एक बोर्ड को वर्गों में काटने की न्यूनतम लागत

मान लीजिए हमारे पास लंबाई p और चौड़ाई q का एक बोर्ड है; हमें इस बोर्ड को p*q संख्या के वर्गों में तोड़ना है ताकि तोड़ने की लागत यथासंभव न्यूनतम हो। प्रत्येक किनारे के लिए काटने की लागत दी जाएगी।

इसलिए, यदि इनपुट X_slice =[3,2,4,2,5], Y_slice =[5,2,3]

जैसा है

पायथन में एक बोर्ड को वर्गों में काटने की न्यूनतम लागत

तो आउटपुट 65

. होगा

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

  • res :=0
  • क्षैतिज:=1, लंबवत:=1
  • i :=0, j :=0
  • जबकि मैं <एम और जे <एन, करते हैं
    • अगर X_slice[i]> Y_slice[j], तो
      • res :=res + X_slice[i] * लंबवत
      • क्षैतिज:=क्षैतिज + 1
      • i :=i + 1
    • अन्यथा,
      • res :=res + Y_slice[j] * क्षैतिज
      • ऊर्ध्वाधर:=लंबवत + 1
      • j :=j + 1
  • कुल :=0
  • जबकि मैं <एम, करते हैं
    • कुल :=कुल + X_slice[i]
    • i :=i + 1
  • रेस :=रेस + टोटल * वर्टिकल
  • कुल :=0
  • जबकि j
  • कुल :=कुल + Y_slice[j]
  • j :=j + 1
  • रेस :=रेस + टोटल * हॉरिजॉन्टल
  • रिटर्न रेस
  • उदाहरण

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

    def minCost(X_slice, Y_slice, m, n):
       res = 0
       X_slice.sort(reverse = True)
       Y_slice.sort(reverse = True)
       horizontal = 1
       vertical = 1
       i = 0
       j = 0
       while i < m and j < n:
          if (X_slice[i] > Y_slice[j]):
             res += X_slice[i] * vertical
             horizontal += 1
             i += 1
          else:
             res += Y_slice[j] * horizontal
             vertical += 1
             j += 1
       total = 0
       while (i < m):
          total += X_slice[i]
          i += 1
       res += total * vertical
       total = 0
       while (j < n):
          total += Y_slice[j]
          j += 1
       res += total * horizontal
       return res
    m = 6; n = 4
    X_slice = [3,2,4,2,5]
    Y_slice = [5,2,3]
    print(minCost(X_slice, Y_slice, m-1, n-1))

    इनपुट

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

    आउटपुट

    65

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

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

    1. पायथन में न्यूनतम लागत वाले शहरों को जोड़ना

      मान लीजिए कि 1 से N तक N शहरों की संख्या है। हमारे पास कनेक्शन हैं, जहां प्रत्येक कनेक्शन [i] [शहर 1, शहर 2, लागत] है, यह शहर 1 और शहर 2 को एक साथ जोड़ने की लागत का प्रतिनिधित्व करता है . हमें न्यूनतम लागत का पता लगाना होगा ताकि शहरों की प्रत्येक जोड़ी के लिए, कनेक्शन का एक मार्ग मौजूद हो (संभवतः लं

    1. पायथन में लीफ वैल्यू से न्यूनतम लागत का पेड़

      मान लीजिए कि हमारे पास सकारात्मक पूर्णांकों की एक सरणी है, सभी बाइनरी पेड़ों पर विचार करें जैसे कि - प्रत्येक नोड में 0 या 2 बच्चे होते हैं; गिरफ्तारी सरणी के मान पेड़ के इन-ऑर्डर ट्रैवर्सल में प्रत्येक पत्ते के मूल्यों के अनुरूप होते हैं। प्रत्येक गैर-पत्ती नोड का मान क्रमशः इसके बाएँ और दाएँ उपप्