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

जांचें कि क्या सभी लोग पायथन में दो मशीनों पर वोट कर सकते हैं

मान लीजिए कि हमारे पास एक संख्या n है जो n लोगों को दर्शाती है और दो समान वोटिंग मशीनें हैं। हमारे पास आकार n नामक एक सरणी भी है, जिससे कि समय [i] किसी भी मशीन पर वोट करने के लिए i-वें व्यक्ति द्वारा खर्च किए गए कुल समय का प्रतिनिधित्व करता है। एक समय में, दो मशीनों में से प्रत्येक पर केवल एक ही व्यक्ति हो सकता है। हमारे पास एक और मान x है, जो अधिकतम स्वीकार्य समय का प्रतिनिधित्व करता है जिसके लिए मशीनें चालू हैं, हमें यह जांचना होगा कि सभी व्यक्ति अपना वोट दे सकते हैं या नहीं।

इसलिए, यदि इनपुट n =3, x =7, समय =[3, 5, 3] जैसा है, तो आउटपुट ट्रू होगा। क्योंकि समय t0 पर 0वां व्यक्ति पहली मशीन पर जाता है और पहला व्यक्ति दूसरी मशीन पर जाता है। अब समय पर t3 पहली मशीन मुफ्त है। अब दूसरा व्यक्ति पहली मशीन पर जाता है और समय पर t5 दूसरी मशीन मुफ़्त है और समय पर t6 पहली मशीन मुफ़्त है इसलिए सभी प्रतिभागियों ने समय पर मतदान किया है।

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

  • total_sum :=समय के सभी तत्वों का योग
  • यदि कुल_योग <=x, तो
    • सही लौटें
  • सूची का समय क्रमित करें
  • prev_sum :=समय के समान आकार की एक सरणी और 0 से भरें
  • prev_sum[0] :=time[0]
  • मैं के लिए 1 से लेकर prev_sum के आकार के लिए, करें
    • prev_sum[i] :=prev_sum[i - 1] + time[i]
  • मैं के लिए 0 से prev_sum के आकार की सीमा में, करते हैं
    • जे के लिए i + 1 से लेकर prev_sum -1 के आकार तक, do
      • temp_sum :=prev_sum[i] + (total_sum - prev_sum[j])
      • अगर temp_sum <=x और Total_sum - temp_sum <=x, तो
        • सही लौटें
  • झूठी वापसी

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

उदाहरण

def solve(n, x, time):
   total_sum = sum(time)
   if total_sum <= x:
      return True
   time.sort()
   prev_sum = [0 for i in range(len(time))]
   prev_sum[0] = time[0]
   for i in range(1, len(prev_sum)):
      prev_sum[i] = prev_sum[i - 1] + time[i]
   for i in range(0, len(prev_sum)):
      for j in range(i + 1, len(prev_sum)):
         temp_sum = (prev_sum[i] + (total_sum - prev_sum[j]))
         if temp_sum <= x and total_sum - temp_sum <= x:
            return True
   return False
n = 3
x = 7
time = [3, 5, 3]
print(solve(n, x, time))

इनपुट

3, 7, [3, 5, 3]

आउटपुट

True

  1. जांचें कि क्या दो पेड़ों के सभी स्तर विपर्ययण हैं या नहीं, पायथन में

    मान लीजिए, हमें दो बाइनरी ट्री दिए गए हैं। हमें यह जांचना है कि बाइनरी ट्री का प्रत्येक स्तर दूसरे बाइनरी ट्री के समान स्तर का विपर्ययण है या नहीं। यदि यह विपर्यय है तो हम सही लौटते हैं, अन्यथा हम गलत लौटते हैं। तो, अगर इनपुट पसंद है , तो आउटपुट ट्रू होगा। इसे हल करने के लिए, हम इन चरणों का पाल

  1. पायथन में नोड्स की अदला-बदली से दो पेड़ बन सकते हैं या नहीं, इसकी जाँच करने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास दो पेड़ हैं, हमें यह जांचना होगा कि क्या हम किसी भी नोड के बाएँ और दाएँ सबट्री को कितनी भी बार स्वैप करके पहले पेड़ को दूसरे में बदल सकते हैं। तो, अगर इनपुट पसंद है तो आउटपुट सही होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - que1 :=शुरुआत में root0 वाली एक कतार

  1. मैं कैसे जांच सकता हूं कि ए पाइथन में बी का सुपरक्लास है या नहीं?

    हमारे पास वर्ग ए और बी निम्नानुसार परिभाषित हैं - class A(object): pass class B(A): pass उदाहरण A को दो तरीकों से B का सुपर क्लास साबित किया जा सकता है class A(object):pass class B(A):pass print issubclass(B, A) # Here we use the issubclass() method to check if B is subclass of A print B.__bases__