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

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

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

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

11000
11000
00100
00011

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

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

  • दो मेथड होंगे, एक द्वीपों की संख्या गिनने के लिए numIslands() और makeWater()। makeWater() इस तरह होगा -
  • यदि ग्रिड में पंक्तियों की संख्या 0 है, तो 0 लौटाएं
  • n = पंक्ति संख्या और m := कॉलम संख्या, और ans := 0
  • i को 0 से n - 1 तक की रेंज में
    • j को 0 से m तक की रेंज में
      • यदि grid[i, j] = 1, तो ans := ans + 1
      • makeWater(i, j, n, m, grid)
  • makeWater() इंडेक्स i, j, पंक्ति और कॉलम संख्या n और m, और ग्रिड लेगा
  • यदि i < 0 या j < 0 या i >= n या j >= m, तो इस मेथड से लौट जाएं
  • यदि grid[i, j] = 0, तो लौट जाएं अन्यथा grid[i, j] := 0 करें
  • makeWater(i + 1, j, n, m, grid) कॉल करें
  • makeWater(i, j + 1, n, m, grid) कॉल करें

यह DFS (डेप्थ-फर्स्ट सर्च) का उपयोग करके विज़िटेड लैंड को पानी में बदल देता है।

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

उदाहरण

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. - पायथन फैक्टोरियल: एक गाइड

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

  1. - Python में दो मैप्स में ओवरलैपिंग द्वीपों की संख्या गिनने का प्रोग्राम

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

  1. मैट्रिक्स में पूरी तरह से घिरे हुए द्वीपों की संख्या गिनने का पायथन प्रोग्राम मैट्रिक्स में पूरी तरह से घिरे हुए द्वीपों की संख्या गिनने का पायथन प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है। जहां 1 भूमि दर्शाता है और 0 पानी दर्शाता है। जैसा कि हम जानते हैं एक द्वीप 1 का समूह है जो एक साथ जुड़े हुए हैं जिसकी परिधि पानी से घिरी हुई है। हमें पूरी तरह से घिरे हुए द्वीपों की संख्या ढूंढनी है। उदाहरण के लिए, यदि इनपुट इस तरह है: तो आउटपुट 2 होगा,