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

यह जांचने का कार्यक्रम कि क्या हम सभी कमरों को अजगर में अनलॉक कर सकते हैं या नहीं

मान लीजिए हमारे पास सूचियों की एक सूची है जिसे कमरे कहा जाता है। कमरों में प्रत्येक सूचकांक एक कमरे का प्रतिनिधित्व करता है और कमरे [i] अन्य कमरों को खोलने के लिए विभिन्न चाबियों का प्रतिनिधित्व करता है। कमरा 0 खुला है और हम उस कमरे में हैं और हर दूसरे कमरे में ताला लगा हुआ है। हम खुले कमरों के बीच स्वतंत्र रूप से घूम सकते हैं; हमें यह देखना होगा कि हम हर कमरा खोल सकते हैं या नहीं।

इसलिए, यदि इनपुट कमरे की तरह है =[[2, 0], [3], [1, []], तो आउटपुट सही होगा, क्योंकि हम कमरे 0 से शुरू करते हैं और इसकी चाबी के साथ कमरे 2 में जा सकते हैं 2. कक्ष 2 से हम कक्ष 1 में जा सकते हैं। फिर कक्ष 3 की चाबी लेकर उसे खोलें। तो सब खुल गए।

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

  • n :=कमरों का आकार
  • तैयार:=एकल तत्व 0 के साथ एक सूची
  • देखा:=एक नया सेट
  • जबकि तैयार खाली नहीं है, करें
    • u :=तैयार का अंतिम तत्व और इसे तैयार से हटा दें
    • आपको देखा गया के रूप में चिह्नित करें
    • कमरे में प्रत्येक वी के लिए[यू], करते हैं
      • यदि v नहीं देखा जाता है, तो
        • तैयार होने के अंत में v डालें
  • सही लौटें जब सीन का आकार n के समान हो, अन्यथा गलत।

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

उदाहरण

class Solution:
   def solve(self, rooms):
      n = len(rooms)

      ready = [0]
      seen = set()

      while ready:
         u = ready.pop()
         seen.add(u)

         for v in rooms[u]:
            if v not in seen:
               ready.append(v)

      return len(seen) == n

ob = Solution()
rooms = [
   [2, 0],
   [3],
   [1],
   []
]
print(ob.solve(rooms))

इनपुट

rooms = [[2, 0],[3],[1],[]]

आउटपुट

True

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

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

  1. पायथन में दिया गया ग्राफ द्विदलीय है या नहीं, यह जांचने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास एक अप्रत्यक्ष ग्राफ है, हमें यह जांचना है कि ग्राफ द्विदलीय है या नहीं। जैसा कि हम जानते हैं कि एक ग्राफ द्विदलीय होता है जब हम ग्राफ के नोड्स को दो सेट ए और बी में विभाजित कर सकते हैं जैसे कि ग्राफ के प्रत्येक किनारे {यू, वी} में ए में एक नोड और बी में दूसरा नोड वी होता है।

  1. एक सूची खाली है या नहीं, यह जांचने के लिए पायथन प्रोग्राम?

    एक खाली सूची दी। हमारा काम मौसम की जांच करना है कि यह सूची खाली है या नहीं। यहाँ हम जाँच करते हैं जाँच का एक निहित तरीका है। एल्गोरिदम Step 1: We take an empty list. Step 2: then check if list is empty then return 1 otherwise 0. उदाहरण कोड # Python code to check for empty list def checklist(A):