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

पायथन में छड़ काटने और समान लंबाई की छड़ें बेचने के बाद अधिकतम लाभ खोजने का कार्यक्रम

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

इसलिए, यदि इनपुट रॉडलेन की तरह है =[7, 10] लाभ =6 लागत =4, तो आउटपुट 82 होगा, क्योंकि हम लंबाई 7 की छड़ को दो छड़ों में काट सकते हैं, लंबाई 5 और 2 के साथ। हम तब कर सकते हैं लंबाई 10 की छड़ को दो छड़ों में काटें, दोनों की लंबाई 5। फिर लंबाई 5 की सभी 3 छड़ें (5 + 5 + 5) * 6 - (2 * 4) =82 के कुल लाभ के लिए बेच दें।

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

  • n :=रॉडलेन का आकार
  • यदि n, 0 के समान है, तो
    • वापसी 0
  • l_max :=अधिकतम रॉडलेन
  • p_max :=0
  • 1 से l_max तक की कटौती के लिए, करें
    • p_cut :=0
    • रॉडलेन में प्रत्येक रॉड_लेन के लिए, करें
      • अगर रॉड_लेन <काटता है, तो
        • अगले पुनरावृत्ति के लिए जाएं
      • c_count :=rod_len / cuts
      • total_len :=c_count * कट्स
      • अगर रॉड_लेन टोटल_लेन के समान है, तो
        • c_count :=c_count - 1
      • curr_profit :=total_len * लाभ - लागत * c_count
      • यदि कर_लाभ <0, तो
        • अगले पुनरावृत्ति के लिए जाएं
      • p_cut :=p_cut + curr_profit
    • p_max :=अधिकतम p_max और p_cut
  • पी_मैक्स लौटाएं

उदाहरण

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

def solve(rodLen, profit, cost):
   n = len(rodLen)
   if n == 0:
      return 0
   l_max = max(rodLen)
   p_max = 0

   for cuts in range(1, l_max + 1):
      p_cut = 0
      for rod_len in rodLen:
         if rod_len < cuts:
            continue
         c_count = rod_len // cuts
         total_len = c_count * cuts
         if rod_len == total_len:
            c_count -= 1
         curr_profit = total_len * profit - cost * c_count
         if curr_profit < 0:
            continue
         p_cut += curr_profit
      p_max = max(p_max, p_cut)
   return p_max

rodLen = [7, 10]
profit = 6
cost = 4
print(solve(rodLen, profit, cost))

इनपुट

[7, 10], 6, 4

आउटपुट

82

  1. पायथन में स्टॉक खरीद और बेचकर हम अधिकतम लाभ प्राप्त करने के लिए कार्यक्रम कर सकते हैं?

    मान लीजिए कि हमारे पास कालानुक्रमिक क्रम में किसी कंपनी के स्टॉक की कीमतों की एक सूची है, तो हमें उस स्टॉक को खरीदने और बेचने से होने वाले अधिकतम लाभ का पता लगाना होगा। हमें बेचने से पहले खरीदना चाहिए, और फिर से खरीदने से पहले हमें स्टॉक बेचने के एक दिन बाद इंतजार करना चाहिए। इसलिए, यदि इनपुट कीमतो

  1. पायथन में गैर-साझा शब्दों की अधिकतम लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास शब्दों नामक लोअरकेस वर्णानुक्रम की एक सूची है, हमें दो अलग-अलग शब्दों की लंबाई का अधिकतम योग खोजना होगा जो एक सामान्य अक्षर साझा नहीं करते हैं। इसलिए, यदि इनपुट शब्दों की तरह है =[abcd, mno , abdcmno, amno], तो आउटपुट 7 होगा, क्योंकि शब्द साझा नहीं करते हैं कोई भी सामान्य अक्ष

  1. एक सूची में अधिकतम और न्यूनतम तत्व की स्थिति खोजने के लिए पायथन कार्यक्रम?

    पायथन में अधिकतम, न्यूनतम तत्व और उनकी स्थिति का भी पता लगाना बहुत आसान है। पायथन विभिन्न इनबिल्ट फ़ंक्शन प्रदान करता है। न्यूनतम () का उपयोग किसी सरणी में न्यूनतम मान ज्ञात करने के लिए किया जाता है, अधिकतम () का उपयोग किसी सरणी में अधिकतम मान ज्ञात करने के लिए किया जाता है। अनुक्रमणिका () का उपयोग