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

पायथन में जॉब शेड्यूलिंग से अधिकतम लाभ प्राप्त करने का प्रोग्राम


मान लीजिए हमारे पास अंतराल की एक लिस्ट है जहां प्रत्येक अंतराल में तीन मान [start, end, profit] होते हैं। हम एक समय में केवल एक कार्य कर सकते हैं, हमें अधिकतम लाभ ढूंढना है जो हम प्राप्त कर सकते हैं।

उदाहरण के लिए, यदि इनपुट intervals = [[1, 2, 100], [3, 5, 40], [6, 19, 150], [2, 100, 250]] है, तो आउटपुट 350 होगा, क्योंकि हम ये दो अंतराल ले सकते हैं: [1, 2, 100] और [2, 100, 250]।

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए हम डायनामिक प्रोग्रामिंग का उपयोग करेंगे:

  • d := एक खाली मैप जिसमें लिस्ट वैल्यू हों
  • n := 0
  • प्रत्येक (start, end, profit) के लिए intervals में:
    • यदि end > n है, तो n := end
    • (start, profit) पेयर को d[end] में डालें
  • A := आकार n + 1 की लिस्ट, 0 से भरी हुई
  • end को 0 से A के आकार - 1 तक लूप चलाएं:
    • यदि end, d में है:
      • प्रत्येक (start, profit) पेयर के लिए d[end] में:
        • A[end] := max(A[end], A[start] + profit, A[end - 1])
    • अन्यथा, A[end] := A[end - 1]
  • A का अंतिम मान लौटाएं

पायथन कार्यान्वयन

from collections import defaultdict

class Solution:
    def solve(self, intervals):
        d = defaultdict(list)
        n = 0
        for start, end, profit in intervals:
            if end > n:
                n = end
            d[end].append([start, profit])
        A = [0 for i in range(n + 1)]
        for end in range(len(A)):
            if end in d:
                for start, profit in d[end]:
                    A[end] = max(A[end], A[start] + profit, A[end - 1])
            else:
                A[end] = A[end - 1]
        return A[-1]

ob = Solution()
intervals = [[1, 2, 100], [3, 5, 40], [6, 19, 150], [2, 100, 250]]
print(ob.solve(intervals))

इनपुट

[[1, 2, 100],[3, 5, 40],[6, 19, 150],[2, 100, 250]]

आउटपुट

350
  1. - पायथन में स्टॉक मार्केट में एक बार खरीद-बिक्री करके प्राप्त अधिकतम लाभ खोजने का प्रोग्राम

    मान लीजिए हमारे पास prices नामक सूची है जो किसी कंपनी के स्टॉक की कीमतों को कालानुक्रमिक क्रम में दर्शाती है। हमें उस अधिकतम लाभ को ढूंढना है जो हम उस स्टॉक को केवल एक बार खरीद और बेचकर कमा सकते थे। हमें ध्यान रखना होगा कि हम बेचने से पहले खरीदना होगा। उदाहरण के लिए, यदि इनपुट है prices = [10, 12,

  1. - पायथन प्रोग्राम: तीन नंबर्स में अधिकतम

    तीन नंबर a, b और c दिए गए हैं, हमारा कार्य दिए गए नंबरों में से अधिकतम एलिमेंट ढूंढना है।उदाहरणInput: a = 2, b = 4, c = 3 Output: 4एल्गोरिदमचरण 1: तीन यूजर इनपुट नंबर इनपुट करें। चरण 2: तीन नंबर्स को लिस्ट में जोड़ें। चरण 3: सबसे बड़ी संख्या खोजने के लिए max() फंक्शन का उपयोग करें max(lst)। चरण 4: औ

  1. - पायथन प्रोग्राम के निष्पादन का समय कैसे प्राप्त करें?

    किसी प्रोग्राम के निष्पादन समय को मापने के लिए, या तो time.clock() या time.time() फंक्शन्स का उपयोग करें। पायथन डॉक्स कहते हैं कि इस फंक्शन का उपयोग बेंचमार्किंग उद्देश्यों के लिए किया जाना चाहिए। उदाहरण import time t0 = time.clock() print(Hello) t1 = time.clock() - t0 print(Time elapsed: , t1 - t