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

पायथन में एक मैट्रिक्स में सबसे बड़े द्वीप का क्षेत्रफल खोजने का कार्यक्रम

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

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

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

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

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

  • एक फ़ंक्शन को परिभाषित करें dfs() । यह मैट्रिक्स लेगा, r, c
  • कुल :=कुल + 1
  • मैट्रिक्स[आर, सी] :=0
  • यदि r - 1>=0 और मैट्रिक्स [r - 1, c] 1 के समान है, तो
    • dfs(मैट्रिक्स, r-1, c)
  • यदि c - 1>=0 और मैट्रिक्स [r, c - 1] 1 के समान है, तो
    • dfs(मैट्रिक्स, r, c - 1)
  • यदि r + 1
  • dfs(मैट्रिक्स, r + 1, c)
  • यदि c + 1
  • dfs(मैट्रिक्स, r, c + 1)
  • मुख्य विधि से, निम्न कार्य करें -
  • r_len :=मैट्रिक्स की पंक्ति गणना
  • c_len :=मैट्रिक्स की कॉलम संख्या
  • max_island :=0
  • r के लिए 0 से r_len - 1 की श्रेणी में, करें
    • सी श्रेणी में 0 से c_len-1 के लिए, करें
      • यदि मैट्रिक्स [आर, सी] 1 के समान है, तो
        • कुल :=0
        • dfs(मैट्रिक्स, r, c)
        • max_island :=अधिकतम max_island, कुल
  • max_island वापसी
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    class Solution:
       def solve(self, matrix):
          self.r_len = len(matrix)
          self.c_len = len(matrix[0])
          max_island = 0
          for r in range(self.r_len):
             for c in range(self.c_len):
                if matrix[r][c] == 1:
                   self.total = 0
                   self.dfs(matrix, r, c)
                   max_island = max(max_island, self.total)
          return max_island
       def dfs(self, matrix, r, c):
          self.total += 1
          matrix[r][c] = 0
          if r - 1 >= 0 and matrix[r - 1][c] == 1:
             self.dfs(matrix, r - 1, c)
          if c - 1 >= 0 and matrix[r][c - 1] == 1:
             self.dfs(matrix, r, c - 1)
          if r + 1 < self.r_len and matrix[r + 1][c] == 1:
             self.dfs(matrix, r + 1, c)
          if c + 1 < self.c_len and matrix[r][c + 1] == 1:
             self.dfs(matrix, r, c + 1)
    ob = Solution()
    matrix = [ [0, 0, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0] ]
    print(ob.solve(matrix))

    इनपुट

    matrix = [
    [0, 0, 1, 1, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0],
    [0, 1, 1, 1, 1, 0, 0],
    [0, 0, 1, 1, 0, 0, 0],
    [0, 0, 0, 0, 0, 1, 1],
    [0, 0, 0, 0, 0, 1, 0] ]

    आउटपुट

    6

    1. एक सरणी में सबसे बड़ा तत्व खोजने के लिए पायथन प्रोग्राम

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

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

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

    1. एक सरणी में सबसे बड़ा तत्व खोजने के लिए पायथन कार्यक्रम

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