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

पायथन में दिए गए मैट्रिक्स में द्वीपों की संख्या गिनने का कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी मैट्रिक्स है, हमें मैट्रिक्स में द्वीपों की संख्या ज्ञात करनी है। यहां 1 जमीन के लिए है और 0 पानी के लिए है, इसलिए एक द्वीप 1s का एक समूह है जो पड़ोसी हैं और जिनकी परिधि पानी से घिरी हुई है। यहां हम विचार कर रहे हैं कि पड़ोसी केवल क्षैतिज या लंबवत हो सकते हैं, विकर्ण नहीं।

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

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

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

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

  • एक फंक्शन एक्सप्लोर() परिभाषित करें। यह पंक्ति, कॉलम, मैट्रिक्स लेगा
  • यदि पंक्ति और स्तंभ मैट्रिक्स या मैट्रिक्स की सीमा में नहीं हैं [पंक्ति, col] 0 है, तो
    • वापसी
  • मैट्रिक्स[पंक्ति, कॉलम] :=0
  • एक्सप्लोर करें(पंक्ति + 1, कॉलम, मैट्रिक्स)
  • एक्सप्लोर करें(पंक्ति -1, कॉलम, मैट्रिक्स)
  • एक्सप्लोर करें(पंक्ति, कॉलम + 1, मैट्रिक्स)
  • एक्सप्लोर करें(पंक्ति, कॉलम -1, मैट्रिक्स)
  • मुख्य विधि से, निम्न कार्य करें -
  • यदि मैट्रिक्स शून्य है, तो
    • वापसी 0
  • द्वीप :=0
  • श्रेणी में पंक्ति के लिए 0 से लेकर मैट्रिक्स की पंक्ति गणना के लिए, करें
    • कॉलम के लिए 0 से लेकर मैट्रिक्स के कॉलम काउंट तक, करें
      • यदि मैट्रिक्स [पंक्ति, col] 1 के समान है, तो
        • द्वीप :=द्वीप + 1
        • एक्सप्लोर करें(पंक्ति, कॉलम, मैट्रिक्स)
  • वापसी द्वीप

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

उदाहरण

class Solution:
   def explore(self, row, col, matrix):
   if (
         row < 0 or col < 0 or row > len(matrix) - 1 or col > len (matrix[0]) - 1 or          matrix[row][col] == 0):
         return
      matrix[row][col] = 0
      self.explore(row + 1, col, matrix)
      self.explore(row - 1, col, matrix)
      self.explore(row, col + 1, matrix)
      self.explore(row, col - 1, matrix)
      def solve(self, matrix):
         if not matrix:
            return 0
         islands = 0
         for row in range(len(matrix)):
            for col in range(len(matrix[0])):
               if matrix[row][col] == 1:
                  islands += 1
                  self.explore(row, col, matrix)
         return islands
ob = Solution() matrix = [
   [1, 0, 1, 0, 0],
   [0, 0, 1, 0, 0],
   [0, 1, 1, 0, 0],
   [0, 0, 0, 0, 0],
   [1, 1, 0, 1, 1],
   [1, 1, 1, 0, 1]
]
print(ob.solve(matrix))

इनपुट

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

आउटपुट

4

  1. पायथन में दिए गए किनारों को शामिल करने वाले अद्वितीय पथों की संख्या की गणना करने का कार्यक्रम

    मान लीजिए कि हमारे पास (u, v) के रूप में किनारों की एक सूची है और ये एक पेड़ का प्रतिनिधित्व कर रहे हैं। प्रत्येक किनारे के लिए हमें इनपुट में दिए गए क्रम में उसी क्रम में अद्वितीय पथों की कुल संख्या ज्ञात करनी होगी जिसमें उक्त किनारे शामिल हैं। इसलिए, यदि इनपुट किनारों की तरह है =[[0, 1],[0, 2],[1

  1. अजगर में मैट्रिक्स में घिरे द्वीपों की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी मैट्रिक्स है। जहां 1 भूमि का प्रतिनिधित्व करता है और 0 पानी का प्रतिनिधित्व करता है। जैसा कि हम जानते हैं कि एक द्वीप 1s का एक समूह है जो एक साथ समूहीकृत होता है जिसकी परिधि पानी से घिरी होती है। हमें पूरी तरह से घिरे हुए द्वीपों की संख्या ज्ञात करनी है। तो, अगर इनप

  1. किसी दिए गए स्ट्रिंग में सेट का उपयोग करके स्वरों की संख्या गिनने के लिए पायथन प्रोग्राम

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