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

पायथन में द्वीपों की संख्या

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

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

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 की सीमा में
    • जे के लिए 0 से मी की सीमा में
      • अगर ग्रिड[i, j] =1, तो उत्तर :=ans + 1
      • मेकवाटर(i, j, n, m, grid)
  • मेकवाटर () इंडेक्स 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):
      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)
ob1 = Solution()
print(ob1.numIslands([["1","1","0","0","0"],["1","1","0","0","0"],["0","0","1","0","0"],
["0","0","0","1","1"]]))

इनपुट

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

आउटपुट

3

  1. पायथन फैक्टोरियल:एक गाइड

    पायथन फैक्टोरियल की गणना कैसे करें आपको अपने हाई स्कूल गणित वर्ग से फैक्टोरियल शब्द याद हो सकता है। कैलकुलेटर के बिना उनकी गणना करना बहुत आसान नहीं है। कौन मैन्युअल रूप से 1x2x3x4 और इसी तरह से गुणा करके 10 के भाज्य की गणना करना चाहता है? पायथन में भाज्य की गणना करने के कुछ तरीके हैं। इस गाइड मे

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

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

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

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