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

कई द्वीपों को खोजने का कार्यक्रम, जहां से हम पायथन में नहीं जा सकते हैं

मान लीजिए कि हमारे पास एक बाइनरी मैट्रिक्स है। यहां 1 भूमि का प्रतिनिधित्व करता है और 0 पानी का प्रतिनिधित्व करता है। किसी भी भूमि से हम ऊपर, नीचे, बाएँ या दाएँ जा सकते हैं लेकिन तिरछे रूप से किसी अन्य लैंड सेल में नहीं जा सकते हैं या मैट्रिक्स से बाहर जा सकते हैं। हमें उन भूमि कोशिकाओं की संख्या ज्ञात करनी है जिनसे हम मैट्रिक्स से बाहर नहीं जा सकते।

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

0 0 0 1
0 1 1 0
0 1 1 0
0 0 0 1

तो आउटपुट 4 होगा, क्योंकि बीच में 4 लैंड स्क्वेयर हैं, जहां से हम मैट्रिक्स से बाहर नहीं निकल सकते।

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

  • q :=प्रत्येक पंक्ति i और कॉलम के लिए जोड़े (i, j) की एक सूची जब मैट्रिक्स [i, j] भूमि है i और j बॉर्डर इंडेक्स हैं
  • आईडीएक्स:=0
  • क्यू में प्रत्येक जोड़ी (x, y) के लिए, करें
    • मैट्रिक्स[x, y] :=0
  • जबकि idx
  • x, y:=q[idx]
  • प्रत्येक (dx, dy) के लिए [(-1, 0) ,(0, -1) ,(0, 1) ,(1, 0) ] में, do
    • एनएक्स:=एक्स + डीएक्स
    • ny :=y + dy
    • यदि 0 <=nx <मैट्रिक्स की पंक्ति गणना और 0 <=ny <मैट्रिक्स की कॉलम संख्या [एनएक्स] और मैट्रिक्स [एनएक्स, एनई] 1 है, तो
      • मैट्रिक्स[एनएक्स, एनवाई] :=0
      • q के अंत में (nx, ny) डालें
  • idx :=idx + 1
  • मैट्रिक्स के सभी तत्वों का रिटर्न योग
  • उदाहरण

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

    def solve(matrix):
       q = [(i, j) for i in range(len(matrix)) for j in range(len(matrix[i])) if matrix[i][j] and (i == 0 or i == len(matrix) - 1 or j == 0 or j == len(matrix[i]) - 1)]
       idx = 0
       for x, y in q:
          matrix[x][y] = 0
       while idx < len(q):
          x, y = q[idx]
          for dx, dy in [(-1, 0), (0, -1), (0, 1), (1, 0)]:
             nx, ny = x + dx, y + dy
             if 0 <= nx < len(matrix) and 0 <= ny < len(matrix[nx]) and matrix[nx][ny]:
                matrix[nx][ny] = 0
                q.append((nx, ny))
          idx += 1
       return sum(sum(row) for row in matrix)
    
    matrix = [
    [0, 0, 0, 1],
    [0, 1, 1, 0],
    [0, 1, 1, 0],
    [0, 0, 0, 1]
    ]
    print(solve(matrix))

    इनपुट

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

    आउटपुट

    4

    1. पायथन में पहले से अंतिम नोड तक प्रतिबंधित पथों की संख्या खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास एक अप्रत्यक्ष भारित जुड़ा हुआ ग्राफ है। ग्राफ में n नोड्स होते हैं और उन्हें 1 से n तक लेबल किया जाता है। प्रारंभ से अंत तक का पथ [z0, z1, z2, ..., zk] जैसे नोड्स का एक क्रम है, यहां z0 प्रारंभ नोड है और zk अंत नोड है और zi और zi+1 के बीच एक किनारा है जहां 0 <=मैं dist(zi+1)

    1. स्ट्रिंग की संख्या खोजने के लिए प्रोग्राम जहां हम 'ए' 'ए' या 'बी' हो सकते हैं, और 'बी' पाइथन में 'बी' रहता है

      मान लीजिए कि हमारे पास केवल ए और बी के साथ एक स्ट्रिंग है। ए एस ए रह सकता है या बी में बदल सकता है, लेकिन बी को बदला नहीं जा सकता है। हमें अद्वितीय स्ट्रिंग्स की संख्या ज्ञात करनी होगी जो हम बना सकते हैं। इसलिए, यदि इनपुट s =baab जैसा है, तो आउटपुट 4 होगा, क्योंकि हम इन स्ट्रिंग्स को बना सकते हैं -

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

      इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन दी गई सूची इनपुट, हमें दी गई सूची में सबसे बड़ी संख्या खोजने की जरूरत है। यहां हम दो दृष्टिकोणों पर चर्चा करेंगे सॉर्टिंग तकनीकों का उपयोग करना अंतर्निहित अधिकतम() फ़ंक्शन का उपयोग करना दृष्टिक