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

यह जाँचने के लिए कार्यक्रम कि क्या हम उस वर्ग को भर सकते हैं जहाँ प्रत्येक पंक्ति और स्तंभ में पायथन में अलग-अलग तत्व होंगे

मान लीजिए कि हमारे पास एक n × n मैट्रिक्स है जिसमें 0 से n तक के मान हैं। यहां 0 एक अधूरे वर्ग का प्रतिनिधित्व करता है, हमें यह जांचना है कि क्या हम खाली वर्गों को इस तरह भर सकते हैं कि प्रत्येक पंक्ति और प्रत्येक कॉलम में 1 से n तक की प्रत्येक संख्या ठीक एक बार दिखाई दे।

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

0 0 2
2 0 1
1 2 3

तब आउटपुट ट्रू होगा, क्योंकि हम मैट्रिक्स को

. पर सेट कर सकते हैं
3 1 2
2 3 1
1 2 3

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

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

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

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

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

        • वापसी (i, j)

  • वापसी(-1, -1)

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

  • यदि x मैट्रिक्स की छठी पंक्ति में है, तो

    • झूठी वापसी

  • यदि x मैट्रिक्स की किसी भी पंक्ति में jth कॉलम में है, तो

    • झूठी वापसी


  • सही लौटें

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

  • मैट्रिक्स में प्रत्येक पंक्ति के लिए, करें

    • यदि पंक्ति में कुछ डुप्लिकेट तत्व हैं, तो

      • झूठी वापसी

    • 0 से n के बीच के कॉलम के लिए, करें

      • अगर कर्नल में कुछ डुप्लीकेट एलिमेंट हैं, तो

        • झूठी वापसी

    • सही लौटें

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

    • n :=मैट्रिक्स की पंक्ति गणना

    • (i, j) =find_empty_cell (मैट्रिक्स, n)

    • अगर (i, j) (-1, -1) के समान है, तो

      • अगर is_complete(matrix, n) सत्य है, तो

        • सही लौटें

      • अन्यथा,

        • झूठी वापसी

    • 1 से n + 1 की श्रेणी में x के लिए, करें

      • यदि is_feasible(matrix, i, j, x) सत्य है, तो

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

        • यदि हल (मैट्रिक्स) सत्य है, तो

          • सही लौटें

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

    • झूठी वापसी


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

उदाहरण

class Solution:
   def solve(self, matrix):
      n = len(matrix)
      def find_empty_cell(matrix, n):
         for i in range(n):
            for j in range(n):
               if matrix[i][j] == 0:
                  return (i, j)
         return (-1, -1)
      def is_feasible(matrix, i, j, x):
         if x in matrix[i]:
            return False
         if x in [row[j] for row in matrix]:
            return False
         return True
      def is_complete(matrix, n):
         for row in matrix:
            if set(row) != set(range(1, n + 1)):
               return False
         for col in range(n):
            if set(row[col] for row in matrix) != set(range(1, n + 1)):
               return False
         return True
      (i, j) = find_empty_cell(matrix, n)

      if (i, j) == (-1, -1):
         if is_complete(matrix, n):
            return True
         else:
            return False
      for x in range(1, n + 1):
         if is_feasible(matrix, i, j, x):
            matrix[i][j] = x
            if self.solve(matrix):
               return True
            matrix[i][j] = 0
      return False
ob = Solution()
matrix = [
   [0, 0, 2],
   [2, 0, 1],
   [1, 2, 3]
]
print(ob.solve(matrix))

इनपुट

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

आउटपुट

True

  1. यह जांचने के लिए कार्यक्रम कि क्या हम एक पेड़ को रंग सकते हैं जहां किसी भी आसन्न नोड्स का रंग समान नहीं है या नहीं

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है जहां प्रत्येक नोड का मान उसके रंग का प्रतिनिधित्व करता है। एक पेड़ में अधिकतम 2 रंग होते हैं। हमें यह जांचना होगा कि क्या नोड्स के रंगों को कितनी भी बार स्वैप करना संभव है ताकि किसी भी दो कनेक्टेड नोड्स का रंग समान न हो। तो, अगर इनपुट पसंद है तो आउटपुट सह

  1. यह जाँचने के लिए प्रोग्राम कि दिया गया मैट्रिक्स Toeplitz मैट्रिक्स है या नहीं, Python में है

    मान लीजिए कि हमारे पास एक मैट्रिक्स एम है, हमें यह जांचना है कि यह टोप्लिट्ज मैट्रिक्स है या नहीं। जैसा कि हम जानते हैं कि एक मैट्रिक्स को Toeplitz कहा जाता है, जब बाएं से दाएं उतरने वाले प्रत्येक विकर्ण का मान समान होता है। तो, अगर इनपुट पसंद है 7 2 6 3 7 2 5 3 7 तो आउटपुट ट्रू होगा। इसे हल

  1. पायथन में पंक्ति और स्तंभ के अनुसार क्रमबद्ध मैट्रिक्स से सभी तत्वों को क्रमबद्ध क्रम में मुद्रित करने के लिए

    कभी-कभी हमें एक मैट्रिक्स के सभी तत्वों को क्रमबद्ध क्रम में चाहिए। लेकिन चूंकि मैट्रिक्स पंक्तियों और स्तंभों के रूप में होता है, हम परिणाम प्राप्त करने के लिए सामान्य सॉर्टिंग एल्गोरिदम लागू नहीं करते हैं। इसके बजाय हम तत्वों को क्रमबद्ध करने के लिए नीचे दिए गए उपयोगकर्ता परिभाषित कार्यों का उपयोग