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

Python प्रोग्राम - उन द्वीपों की संख्या खोजें जहां से बाहर नहीं जा सकते

एक बाइनरी मैट्रिक्स दिया गया है जहां 1 जमीन दर्शाता है और 0 पानी। किसी भी जमीन से हम ऊपर, नीचे, बाएं या दाएं जा सकते हैं (तिरछे नहीं) दूसरी जमीन सेल पर या मैट्रिक्स से बाहर। हमें उन जमीन सेल की संख्या खोजनी है जहां से हम मैट्रिक्स से बाहर नहीं जा सकते।

उदाहरण

इनपुट मैट्रिक्स:

0001
0110
0110
0001

आउटपुट: 4

व्याख्या: बीच में 4 जमीन वर्ग हैं जहां से हम मैट्रिक्स से बाहर नहीं चल सकते।

एल्गोरिदम (BFS दृष्टिकोण)

  1. बॉर्डर पर मौजूद सभी जमीन सेल (1) को क्यू q में जोड़ें
  2. इन बॉर्डर सेल को 0 पर सेट करें (देखा गया मार्क करें)
  3. BFS चलाएं: क्यू से प्रत्येक सेल के लिए, उसके 4 पड़ोसियों (ऊपर, नीचे, बाएं, दाएं) की जांच करें
  4. यदि पड़ोसी वैध है और जमीन (1) है, तो उसे 0 पर सेट करें और क्यू में जोड़ें
  5. अंत में, मैट्रिक्स में शेष सभी 1 का योग उन जमीन सेल की संख्या देगा जहां से बाहर नहीं जाया जा सकता

Python कार्यान्वयन

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
    # बॉर्डर सेल को 0 पर सेट करें
    for x, y in q:
        matrix[x][y] = 0
    
    # BFS
    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))  # आउटपुट: 4

इनपुट/आउटपुट

Input: [[0, 0, 0, 1], [0, 1, 1, 0], [0, 1, 1, 0], [0, 0, 0, 1]]
Output: 4
  1. पायथन में पहले से अंतिम नोड तक प्रतिबंधित पथों की संख्या ज्ञात करने का प्रोग्राम पायथन में पहले से अंतिम नोड तक प्रतिबंधित पथों की संख्या ज्ञात करने का प्रोग्राम

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

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

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

  1. - पायथन प्रोग्राम: लिस्ट में सबसे बड़ी संख्या ढूंढें

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