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

पायथन में एक 2D मैट्रिक्स में अलग-अलग द्वीपों की संख्या ज्ञात कीजिए


मान लीजिए कि हमारे पास एक बाइनरी मैट्रिक्स है। हमें इसमें द्वीपों की संख्या गिननी है। एक द्वीप वह स्थान है जो पानी से घिरा होता है और आसन्न भूमि को क्षैतिज या लंबवत रूप से जोड़कर बनता है। हम मान सकते हैं कि ग्रिड के चारों किनारे पानी से घिरे हैं।

मान लीजिए कि ग्रिड इस तरह है -

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

तीन द्वीप हैं।

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

  • दो तरीके होंगे, एक का उपयोग numIslands() और makeWater() नामक द्वीपों की संख्या गिनने के लिए किया जाएगा। मेकवाटर () इस तरह होगा -

  • यदि ग्रिड में पंक्तियों की संख्या 0 है, तो 0 पर लौटें

  • n =पंक्ति गणना और m :=स्तंभ संख्या, और उत्तर :=0

  • मेरे लिए 0 से n - 1 की सीमा में

    • j के लिए 0 से m की सीमा में

      • अगर ग्रिड [i, j] =1, तो उत्तर:=उत्तर + 1

      • मेकवाटर (i, j, n, m, ग्रिड)

  • मेकवाटर () इंडेक्स i, j, रो और कॉल काउंट n और m, और ग्रिड लेगा

  • अगर मैं <0 या j <0 या i>=n या j>=m, तो इस विधि से वापस आएं

  • अगर ग्रिड [i, j] =0, तो वापस लौटें अन्यथा ग्रिड बनाएं [i, j]:=0

  • मेकवाटर (i + 1, j, n, m, ग्रिड) पर कॉल करें

  • मेकवाटर (i, j + 1, n, m, ग्रिड) पर कॉल करें

उदाहरण

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

class Solution(object):
   def numIslands(self, grid):
      """
      :type grid: List[List[str]]
      :rtype: int
      """
      if len(grid) == 0:
         return 0
      n= len(grid)
      m = len(grid[0])
      ans = 0
      for i in range(n):
         for j in range(m):
            if grid[i][j] == "1":
               ans+=1
            self.make_water(i,j,n,m,grid)
         return ans
   def make_water(self,i,j,n,m,grid):
      if i<0 or j<0 or i>=n or j>=m:
         return
      if grid[i][j] == "0":
         return
      else:
         grid[i][j]="0"
      self.make_water(i+1,j,n,m,grid)
      self.make_water(i,j+1,n,m,grid)
      self.make_water(i-1,j,n,m,grid)
      self.make_water(i,j-1,n,m,grid)

इनपुट

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

आउटपुट

3

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

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

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

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

  1. एक मैट्रिक्स के स्थानान्तरण को खोजने के लिए पायथन कार्यक्रम

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