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

पायथन में स्वीकृत आमंत्रणों की संख्या का पता लगाने का कार्यक्रम

मान लीजिए कि वहाँ m लड़के और n लड़कियाँ हैं, और m =n हैं। एक पार्टी आ रही है, और प्रत्येक लड़के को उस पार्टी में एक लड़की के साथ जाना है। तो, लड़के सभी लड़कियों को आमंत्रित करते हैं और एक लड़की केवल एक आमंत्रण स्वीकार कर सकती है। हमें लड़कों से कुल कितने आमंत्रणों का पता लगाना है जिन्हें लड़कियां स्वीकार कर सकती हैं। इनपुट एमएक्सएन मैट्रिक्स में दिया गया है, जहां प्रत्येक सेल स्थिति i, j यह दर्शाता है कि लड़के ने लड़की को एक पत्र भेजा है या नहीं। अगर सेल 1 है तो इसका मतलब है कि आमंत्रण भेजा गया है, अगर यह 0 है तो इसका मतलब है कि कोई आमंत्रण नहीं भेजा गया है।

तो, अगर इनपुट पसंद है

1 0 0
1 0 1
1 1 0

तो आउटपुट 3 होगा।

आउटपुट 3 होगा अगर -

लड़की 1 लड़के 1 का निमंत्रण स्वीकार करती है।

लड़की 2 ने लड़के 3 का निमंत्रण स्वीकार किया।

लड़की 3 लड़के 2 के निमंत्रण को स्वीकार करती है।

(यहां इंडेक्स 1 से शुरू होता है)

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

  • एक फ़ंक्शन को परिभाषित करें dfs() । यह नोड लेगा, देखा
    • एनई के लिए 0 से एन तक, करें
      • अगर ग्रिड [नोड] [नेई] शून्य नहीं है और देखा गया है [नेई] गलत है, तो
        • देखा[nei] :=सच
        • यदि मिलान [nei] -1 या dfs के समान है (मिलान [nei], देखा गया) सत्य है, तो
          • मिलान करना[nei] :=नोड
          • सही लौटें
    • झूठी वापसी
  • M:=ग्रिड की पंक्ति गणना
  • N :=ग्रिड की कॉलम संख्या
  • मिलान:=आकार N की एक सूची जिसमें मान -1 है
  • res :=0
  • 0 से M की श्रेणी में i के लिए, करें
    • देखा:=आकार N की एक सूची जिसमें मान गलत है
    • यदि dfs(i, देखा गया) सत्य है, तो
      • रिटर्न रेस
  • रिटर्न रेस

उदाहरण

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

def solve(grid):
   M, N = len(grid), len(grid[0])
   matching = [-1] * N

   def dfs(node, seen):
      for nei in range(N):
         if grid[node][nei] and not seen[nei]:
            seen[nei] = True
            if matching[nei] == -1 or dfs(matching[nei], seen):
               matching[nei] = node
               return True
      return False

   res = 0
   for i in range(M):
      seen = [False] * N
      if dfs(i, seen):
         res += 1

   return res

print(solve([[1, 0, 0], [1, 0, 1], [1, 1, 0]]))

इनपुट

[[1, 0, 0], [1, 0, 1], [1, 1, 0]]

आउटपुट

3

  1. यह पता लगाने के लिए कार्यक्रम कि क्या पायथन में सभी के द्वारा ग्राफ़ को ट्रैवर्स किया जा सकता है

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्षों की संख्या 0 से n - 1 है। ग्राफ अप्रत्यक्ष है और प्रत्येक किनारे का वजन है। ग्राफ में तीन प्रकार के भार हो सकते हैं और प्रत्येक भार एक विशेष कार्य को दर्शाता है। दो लोग हैं जो ग्राफ को पार कर सकते हैं, अर्थात् जैक और केसी। जैक ग्राफ को पार कर सकता

  1. पायथन में गोदाम में रखे जाने वाले बक्सों की संख्या का पता लगाने का कार्यक्रम

    मान लीजिए, हमारे पास पूर्णांक वाले दो सरणियाँ हैं। एक सूची में कुछ इकाई चौड़ाई वाले बक्सों की ऊँचाई होती है और दूसरी सूची में गोदाम में कमरों की ऊँचाई होती है। कमरों की संख्या 0...n है, और कमरों की ऊंचाई सरणी गोदाम में उनके संबंधित सूचकांक में प्रदान की जाती है। हमें पता लगाना है कि कितने बक्सों को

  1. सूची में सबसे छोटी संख्या खोजने के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें सभी सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है यहां हम या तो सूची को क्रमबद्ध कर सकते हैं और सबसे छोटा तत्व प्राप्त कर सकते हैं या सबसे छोटा तत्व प्राप्त करने के लिए अंतर्न