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

Python प्रोग्राम - रॉड काटकर और समान लंबाई के रॉड बेचकर अधिकतम लाभ

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

उदाहरण

इनपुट: rodLen = [7, 10], profit = 6, cost = 4

आउटपुट: 82

व्याख्या: हम लंबाई 7 के रॉड को 5 और 2 में काट सकते हैं। फिर लंबाई 10 के रॉड को दो रॉड में काट सकते हैं, दोनों लंबाई 5 के। फिर सभी 3 रॉड को लंबाई 5 पर बेचें: कुल लाभ (5 + 5 + 5) * 6 - (2 * 4) = 90 - 8 = 82।

एल्गोरिदम

  1. n := len(rodLen)
  2. यदि n == 0: 0 लौटाएं
  3. l_max := max(rodLen)
  4. p_max := 0
  5. cuts 1 से l_max तक:
    • p_cut := 0
    • प्रत्येक rod_len in rodLen के लिए:
      • यदि rod_len < cuts: जारी रखें
      • c_count := rod_len // cuts
      • total_len := c_count * cuts
      • यदि rod_len == total_len: c_count -= 1
      • curr_profit := total_len * profit - cost * c_count
      • यदि curr_profit < 0: जारी रखें
      • p_cut += curr_profit
    • p_max = max(p_max, p_cut)
  6. p_max लौटाएं

Python कार्यान्वयन

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))  # आउटपुट: 82

इनपुट/आउटपुट

Input: [7, 10], 6, 4
Output: 82
  1. - पायथन में कूलडाउन के साथ स्टॉक खरीद-बिक्री से अधिकतम लाभ का प्रोग्राम

    स्टॉक की कीमतों की सूची prices दी गई है। अधिकतम लाभ ढूंढें जहां आप खरीदने से पहले बेच नहीं सकते, और बेचने के बाद अगले दिन खरीद नहीं सकते (1 दिन का कूलडाउन)। उदाहरण इनपुट: prices = [2, 6, 9, 4, 11] आउटपुट: 11 लेनदेन: 2 पर खरीदें, 6 पर बेचें (लाभ 4), दिन 2 कूलडाउन, 4 पर खरीदें, 11 पर बेचें (लाभ 7), क

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

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

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

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