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

पायथन में न्यूनतम सबमैट्रिस का पता लगाने का कार्यक्रम

मान लीजिए कि हमारे पास एक 2D मैट्रिक्स है और दूसरा मान k है। हमारा लक्ष्य एक ऐसा मैट्रिक्स लौटाना है जिसमें सभी k x k सब-मैट्रिसेस के न्यूनतम मान हों।

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

3 5 6
8 6 5
4 3 12

और कश्मीर =2,

तो आउटपुट [[3, 5], [3, 3]] होगा।

इनपुट से, हम देख सकते हैं कि ऊपरी बाएँ सबमैट्रिक्स का मान सबसे कम 3

. है
3 5
8 6

ऊपरी दाएं सबमैट्रिक्स का न्यूनतम मान 5

. है
5 6
6 5

नीचे बाईं ओर सबमैट्रिक्स का मान सबसे कम 3

. है
8 6
4 3

नीचे दाईं ओर सबमैट्रिक्स का मान सबसे कम 3

. है
6 5
3 12

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

  • प्रत्येक r के लिए, अनुक्रमणिका r में पंक्ति और मैट्रिक्स में आइटम पंक्ति, करें

    • q :=एक नई डबल एंडेड कतार

    • nrow :=एक नई सूची

    • मैं के लिए 0 से पंक्ति के आकार की सीमा में, ऐसा करें

      • अगर q और q[0] i - k के समान है, तो

        • q का सबसे बायां आइटम पॉप करें

      • जबकि q और row[q[-1]]> row[i] गैर-शून्य है, करें

        • q का सबसे दाहिना आइटम पॉप करें

      • q के दाहिने सिरे पर i डालें

      • पंक्ति डालें[q[0]] nrow के अंत में

    • मैट्रिक्स [आर]:=nrow

  • j के लिए 0 से लेकर मैट्रिक्स के आकार तक[0], करें

    • q :=एक नई डबल एंडेड कतार

    • ncol :=एक नई सूची

    • मैं के लिए 0 से लेकर आव्यूह के आकार तक के लिए, करें

      • अगर q और q[0] i - k के समान है, तो

        • q का सबसे बायां आइटम पॉप करें

      • जबकि q और मैट्रिक्स[q[-1]][j]> मैट्रिक्स[i][j] गैर-शून्य है, करें

        • q का सबसे दाहिना आइटम पॉप करें

      • q के दाहिने सिरे पर i डालें

      • ncol के दाएँ छोर पर मैट्रिक्स [q[0],j] डालें

      • मैं के लिए 0 से लेकर आव्यूह के आकार तक के लिए, करें

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

  • ret :=मैट्रिक्स के आकार की एक नई सूची - k + 1 को 0 से प्रारंभ किया गया

  • मैं के लिए 0 से रिट के आकार की सीमा में, करते हैं

    • j के लिए 0 से लेकर ret के आकार तक[0], करें

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

  • वापसी रिट

उदाहरण

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

import collections
class Solution:
   def solve(self, matrix, k):
      for r, row in enumerate(matrix):
         q = collections.deque()
         nrow = []
         for i in range(len(row)):
            if q and q[0] == i - k:
               q.popleft()
            while q and row[q[-1]] > row[i]:
               q.pop()
            q.append(i)
            nrow.append(row[q[0]])
         matrix[r] = nrow
      for j in range(len(matrix[0])):
         q = collections.deque()
         ncol = []
         for i in range(len(matrix)):
            if q and q[0] == i - k:
               q.popleft()
            while q and matrix[q[-1]][j] > matrix[i][j]:
               q.pop()
            q.append(i)
            ncol.append(matrix[q[0]][j])
         for i in range(len(matrix)):
            matrix[i][j] = ncol[i]
      ret = [[0] * (len(matrix[0]) - k + 1) for _ in range(len(matrix) - k + 1)]
      for i in range(len(ret)):
         for j in range(len(ret[0])):
            ret[i][j] = matrix[i + k - 1][j + k - 1]
         return ret
ob = Solution()
print(ob.solve(matrix = [
   [3, 5, 6],
   [8, 6, 5],
   [4, 3, 12]
], k = 2))

इनपुट

[[3, 5, 6],[8, 6, 5],[4, 3, 12]], 2

आउटपुट

[[3, 5], [3, 3]]

  1. यह पता लगाने के लिए कार्यक्रम कि क्या पायथन में सभी के द्वारा ग्राफ़ को ट्रैवर्स किया जा सकता है

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्षों की संख्या 0 से n - 1 है। ग्राफ अप्रत्यक्ष है और प्रत्येक किनारे का वजन है। ग्राफ में तीन प्रकार के भार हो सकते हैं और प्रत्येक भार एक विशेष कार्य को दर्शाता है। दो लोग हैं जो ग्राफ को पार कर सकते हैं, अर्थात् जैक और केसी। जैक ग्राफ को पार कर सकता

  1. पायथन में मुद्रा आर्बिट्रेज का पता लगाने का कार्यक्रम

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

  1. पायथन प्रोग्राम में सरणी का योग ज्ञात करें

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