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

पायथन में व्यक्तियों को अलग करने का प्रोग्राम जहां दुश्मन एक ही समूह में न रह सकें


मान लीजिए हमारे पास एक संख्या n और enemies नामक एक 2D मैट्रिक्स है। यहां n इंगित करता है कि 0 से n-1 तक लेबल वाले n लोग हैं। अब enemies में प्रत्येक पंक्ति में [a, b] होता है जिसका अर्थ है कि a और b दुश्मन हैं। हमें यह जांचना है कि क्या n लोगों को दो समूहों में विभाजित करना संभव है जैसे कि कोई भी दो लोग जो दुश्मन हैं, एक ही समूह में न हों।

इसलिए, यदि इनपुट n = 4, enemies = [[0, 3],[3, 2]] जैसा है, तो आउटपुट True होगा, क्योंकि हमारे पास [0, 1, 2] और [3] जैसे दो समूह हो सकते हैं।

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

  • graph := एक खाली एडजेंसी सूची

  • प्रत्येक दुश्मन जोड़ी (u, v) के लिए enemies में, करें

    • v को graph[u] के अंत में जोड़ें

    • u को graph[v] के अंत में जोड़ें

  • color := एक नया मैप

  • एक फ़ंक्शन dfs() परिभाषित करें। यह u, c := 0 को प्रारंभ में लेगा

  • यदि u, color में है, तो

    • true वापस करें जब color[u], c के समान हो

  • color[u] := c

  • प्रत्येक v के लिए graph[u] में dfs(v, c XOR 1) के सभी true होने पर true वापस करें

  • मुख्य विधि से निम्नलिखित करें −

  • प्रत्येक u के लिए 0 से n तक की रेंज में यदि u, color में नहीं है तो dfs(u) के सभी true होने पर true वापस करें

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

उदाहरण

class Solution:    def solve(self, n, enemies):       from collections import defaultdict       graph = defaultdict(list)       for u, v in enemies:          graph[u].append(v)          graph[v].append(u)       color = {}       def dfs(u, c=0):          if u in color:             return color[u] == c             color[u] = c             return all(dfs(v, c ^ 1) for v in graph[u])          return all(dfs(u) for u in range(n) if u not in color) ob = Solution() n = 4 enemies = [[0, 3],[3, 2]] print(ob.solve(n, enemies))

इनपुट

4, [[0, 3],[3, 2]]

आउटपुट

True

  1. बाइनरी ट्री को रंगने की संभावना जांचने का पायथन प्रोग्राम जहां कोई आसन्न नोड्स समान रंग के न हों बाइनरी ट्री को रंगने की संभावना जांचने का पायथन प्रोग्राम जहां कोई आसन्न नोड्स समान रंग के न हों

    मान लीजिए हमारे पास एक बाइनरी ट्री है जहां प्रत्येक नोड का मान उसका रंग दर्शाता है। एक ट्री में अधिकतम 2 रंग होते हैं। हमें जांचना है कि क्या नोड्स के रंगों को किसी भी संख्या में स्वैप करके ऐसा करना संभव है कि कोई दो जुड़े हुए नोड्स का रंग समान न हो। उदाहरण के लिए, यदि इनपुट इस तरह है: तो आउटपुट T

  1. - पायथन में उन स्ट्रिंग्स की संख्या खोजें जहां 'a' 'a' या 'b' हो सकता है, और 'b' 'b' ही रहता है

    मान लीजिए हमारे पास केवल a और b वाली एक स्ट्रिंग s है। a a रह सकते हैं या b में बदल सकते हैं, लेकिन b को बदला नहीं जा सकता। हमें उन अद्वितीय स्ट्रिंग्स की संख्या ढूंढनी है जो हम बना सकते हैं। उदाहरण के लिए, यदि इनपुट है s = baab, तो आउटपुट होगा 4, क्योंकि हम ये स्ट्रिंग्स बना सकते हैं: [baab, babb,

  1. - पायथन में बहु-सूची में समान इंडेक्स पर तत्वों को समूहित करना

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो विभिन्न सूचियों के समान इंडेक्स के तत्वों को एक ही सूची में जोड़ता है। और यहां एक बाधा है। सभी सूचियों की लंबाई समान होनी चाहिए। आइए इसे और अधिक स्पष्ट रूप से समझने के लिए एक उदाहरण देखें। इनपुट [[1, 2, 3], [4, 5, 6], [7, 8, 9]] आउटपुट [[1, 4,