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

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


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

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

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

  • n := rooms का आकार
  • ready := एकल तत्व 0 वाली सूची
  • seen := एक नया सेट
  • जब तक ready खाली नहीं है, करें
    • u := ready का अंतिम तत्व और इसे ready से हटाएं
    • u को seen के रूप में चिह्नित करें
    • प्रत्येक v के लिए rooms[u] में, करें
      • यदि v seen नहीं है, तो
        • v को ready के अंत में डालें
  • सत्य लौटाएं जब seen का आकार 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. Python में दो ट्री नोड्स को स्वैप करके बनाए जा सकते हैं या नहीं, इसकी जांच करने का प्रोग्राम Python में दो ट्री नोड्स को स्वैप करके बनाए जा सकते हैं या नहीं, इसकी जांच करने का प्रोग्राम

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

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

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

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

    समस्या विवरण एक खाली सूची दी गई है। हमारा कार्य जांचना है कि यह सूची खाली है या नहीं। यहां हम जांचने का एक निहित तरीका उपयोग करते हैं। एल्गोरिदम हम एक खाली सूची लेते हैं। फिर जांचें कि यदि सूची खाली है तो 1 लौटाएं अन्यथा 0। उदाहरण कोड # खाली सूची की जांच के लिए पायथन कोड def checklist(A): if