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

पायथन में सभी कोशिकाओं को एक ही रंग में आवश्यक संचालन की संख्या की गणना करने का कार्यक्रम

मान लीजिए कि हमारे पास दो-आयामी मैट्रिक्स एम है। अब प्रत्येक सेल में एक मान होता है जो उसके रंग का प्रतिनिधित्व करता है, और एक ही रंग के साथ आसन्न कोशिकाओं (ऊपर, नीचे, बाएं, दाएं) को एक साथ समूहीकृत किया जाना है। अब, एक ऑपरेशन पर विचार करें जहां हम सभी कोशिकाओं को एक समूह में किसी रंग में सेट करते हैं। फिर अंत में आवश्यक संक्रियाओं की न्यूनतम संख्या ज्ञात कीजिए ताकि प्रत्येक सेल का रंग समान हो। और जब रंग बदल जाता है, तो उसे फिर से सेट नहीं किया जा सकता है।

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

<टीडी>2
<टीडी>2
<टीडी>2
<टीडी>1
<टीडी>1
<टीडी>1
<टीडी>3
<टीडी>2
<टीडी>1
2
1
2

तब आउटपुट 2 होगा, क्योंकि हम समूह को 2 से रंग के रूप में 1 में भर सकते हैं और फिर 3 को 1 से भर सकते हैं।

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

  • अगर मैट्रिक्स खाली है, तो

    • वापसी 0

  • फ़ंक्शन को परिभाषित करें dfs() । यह i, j, मैट्रिक्स, वैल लेगा

  • n :=मैट्रिक्स की पंक्ति गणना, m :=मैट्रिक्स की कॉल संख्या

  • अगर मैं <0 या i> n - 1 या j <0 या j> m -1, तो

    • वापसी

  • यदि मैट्रिक्स [i, j] -1 के समान है, तो

    • वापसी

  • यदि मैट्रिक्स [i, j] वैल के समान है, तो

    • मैट्रिक्स [i, j] :=-1

    • dfs(i, j + 1, मैट्रिक्स, वैल)

    • dfs(i + 1, j, मैट्रिक्स, वैल)

    • dfs(i, j-1, मैट्रिक्स, वैल)

    • dfs(i-1, j, मैट्रिक्स, वैल)

  • अन्यथा,

    • वापसी

  • मुख्य विधि से, निम्न कार्य करें-

  • n :=मैट्रिक्स की पंक्ति गणना, m :=मैट्रिक्स की कॉल संख्या

  • d :=खाली नक्शा

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

    • j के लिए 0 से m-1 की सीमा में, करें

    • वैल:=मैट्रिक्स[i, j]

    • अगर वैल -1 के समान नहीं है, तो

    • डी [वैल]:=डी [वैल] + 1

    • dfs(i, j, मैट्रिक्स, वैल)

  • f के शब्दकोश तत्वों को उनके मूल्यों के आधार पर क्रमबद्ध करें

  • सुरक्षित:=एल का अंतिम तत्व

  • रेस :=0

  • प्रत्येक कुंजी मान जोड़े k और d के v के लिए, करें

    • यदि k सुरक्षित के समान नहीं है, तो

    • रेस :=रेस + वी

  • रिटर्न रेस

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

उदाहरण

from collections import defaultdict
class Solution:
   def solve(self, matrix):
      if not matrix:
         return 0
      def dfs(i, j, matrix, val):
         n, m = len(matrix), len(matrix[0])
      if i < 0 or i > n - 1 or j < 0 or j > m - 1:
         return
      if matrix[i][j] == -1:
         return
      if matrix[i][j] == val:
         matrix[i][j] = -1
      dfs(i, j + 1, matrix, val)
      dfs(i + 1, j, matrix, val)
      dfs(i, j - 1, matrix, val)
      dfs(i - 1, j, matrix, val)
      else:
         return
      n, m = len(matrix), len(matrix[0])
      d = defaultdict(int)
   for i in range(n):
      for j in range(m):
         val = matrix[i][j]
   if val != -1:
      d[val] += 1
      dfs(i, j, matrix, val)
      l = sorted(d,key=lambda x: d[x])
      safe = l[-1]
      res = 0
   for k, v in d.items():
      if k != safe:
         res += v
   return res
ob = Solution()
matrix = [
   [2, 2, 2, 2],
   [1, 1, 1, 1],
   [2, 3, 2, 1]
]
print(ob.solve(matrix))

इनपुट

matrix = [[2, 2, 2, 2],[1, 1, 1, 1],[2, 3, 2, 1]]

आउटपुट

2

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

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

  1. पायथन में सभी सरणी तत्वों को समान बनाने के लिए आवश्यक संचालन की संख्या

    हमने तत्वों की एक सरणी दी है, और हमें तत्वों को 1 से बढ़ाकर उन सभी को समान बनाना है। हमें प्रत्येक चरण में n - 1 तत्व को बढ़ाने की अनुमति है। हमारा लक्ष्य सभी सरणी तत्वों को समान बनाने के लिए आवश्यक संचालन की कुल संख्या की गणना करना है। उदाहरण के लिए, यदि आप सूची [1, 2, 3] लेते हैं, तो सभी तत्वों को

  1. 1 से n तक सभी संख्याओं में कुल सेट बिट्स को गिनने के लिए पायथन प्रोग्राम।

    एक सकारात्मक पूर्णांक n को देखते हुए, हम इसके द्विआधारी प्रतिनिधित्व में बदल जाते हैं और सेट बिट्स की कुल संख्या की गणना करते हैं। उदाहरण Input : n=3 Output : 4 एल्गोरिदम Step 1: Input a positive integer data. Step 2: then convert it to binary form. Step 3: initialize the variable s = 0. Step 4: tra