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

पायथन में जांचने का प्रोग्राम कि क्या N-क्वीन समाधान प्राप्त कर सकते हैं


मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है जहां 0 खाली सेल दर्शाता है और 1 उस सेल पर शतरंज की रानी दर्शाता है। हमें जांचना है कि क्या हम इस बोर्ड को भरकर एक वैध N-क्वीन समाधान प्राप्त कर सकते हैं। N-क्वीन पहेली N x N शतरंज बोर्ड पर N रानियों को रखने के लिए कहती है ताकि कोई दो रानी एक-दूसरे पर हमला न कर सकें।

उदाहरण के लिए, दिए गए प्रारंभिक कॉन्फ़िगरेशन के लिए आउटपुट True होगा क्योंकि एक वैध समाधान मौजूद है।

एल्गोरिदम (बैकट्रैकिंग के साथ स्टैक)

  • isSafe(board, i, j) फ़ंक्शन परिभाषित करें जो जांचता है कि (i, j) पर रानी रखना सुरक्षित है या नहीं (पंक्ति, कॉलम, दोनों विकर्ण जांचें)
  • मुख्य विधि से:
    • r=0, c=0, stack=[]
    • जब r < बोर्ड आकार:
      • यदि पंक्ति r में पहले से 1 है, तो r++ करें और जारी रखें
      • अन्यथा, कॉलम c से आगे खोजें जहां रानी रखना सुरक्षित हो
      • यदि मिला, तो रखें, स्टैक में डालें, c=0, r++
      • यदि नहीं मिला, तो बैकट्रैक करें: स्टैक से पॉप करें, उस सेल को 0 करें, अगले कॉलम से पुनः प्रयास करें
      • यदि स्टैक खाली है और कोई स्थान नहीं मिला, तो False वापस करें
    • True वापस करें

उदाहरण

class Solution:
    def solve(self, board):
        def isSafe(board, i, j):
            for r in range(len(board)):
                if r != i and board[r][j] == 1: return False
            r, c = i+1, j+1
            while r < len(board) and c < len(board[0]):
                if board[r][c] == 1: return False
                r += 1; c += 1
            r, c = i+1, j-1
            while r < len(board) and c >= 0:
                if board[r][c] == 1: return False
                r += 1; c -= 1
            r, c = i-1, j+1
            while r >= 0 and c < len(board[0]):
                if board[r][c] == 1: return False
                r -= 1; c += 1
            r, c = i-1, j-1
            while r >= 0 and c >= 0:
                if board[r][c] == 1: return False
                r -= 1; c -= 1
            return True
        r = c = 0
        stack = []
        while r < len(board):
            if 1 in board[r]:
                r += 1; continue
            else:
                found = False
                while c < len(board[0]):
                    if isSafe(board, r, c):
                        board[r][c] = 1
                        stack.append([r, c])
                        found = True
                        break
                    c += 1
                if found:
                    c = 0; r += 1
                else:
                    if not stack: return False
                    m = stack.pop()
                    r, c = m[0], m[1] + 1
                    board[r][c-1] = 0
        return True

ob = Solution()
matrix = [[1,0,0,0,0],[0,0,0,0,0],[0,0,0,0,1],[0,0,0,0,0],[0,0,0,1,0]]
print(ob.solve(matrix))

इनपुट

[[1,0,0,0,0],[0,0,0,0,0],[0,0,0,0,1],[0,0,0,0,0],[0,0,0,1,0]]

आउटपुट

True
  1. Python में दो ट्री नोड्स को स्वैप करके बनाए जा सकते हैं या नहीं, इसकी जांच करने का प्रोग्राम Python में दो ट्री नोड्स को स्वैप करके बनाए जा सकते हैं या नहीं, इसकी जांच करने का प्रोग्राम

    मान लीजिए हमारे पास दो ट्री हैं, हमें यह जांचना है कि क्या हम पहले ट्री को दूसरे में किसी भी नोड के बाएं और दाएं सबट्री को कितनी भी बार स्वैप करके बदल सकते हैं। तो, यदि इनपुट इस तरह है तो आउटपुट True होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: que1 := root0 के साथ प्रारंभ एक कतार que2

  1. पायथन में जांचें कि दिया गया ग्राफ द्विभाजित है या नहीं पायथन में जांचें कि दिया गया ग्राफ द्विभाजित है या नहीं

    मान लीजिए हमारे पास एक अविकल्पित ग्राफ है, हमें जांचना है कि ग्राफ द्विभाजित है या नहीं। जैसा कि हम जानते हैं, एक ग्राफ द्विभाजित होता है जब हम ग्राफ के नोड्स को दो सेट A और B में विभाजित कर सकते हैं ताकि ग्राफ में प्रत्येक किनारा {u,v} का एक नोड u A में और दूसरा नोड v B में हो। उदाहरण के लिए, यदि

  1. - सूची खाली है या नहीं जांचने का पायथन प्रोग्राम

    समस्या विवरण एक खाली सूची दी गई है। हमारा कार्य जांचना है कि यह सूची खाली है या नहीं। यहां हम जांचने का एक निहित तरीका उपयोग करते हैं। एल्गोरिदम हम एक खाली सूची लेते हैं। फिर जांचें कि यदि सूची खाली है तो 1 लौटाएं अन्यथा 0। उदाहरण कोड # खाली सूची की जांच के लिए पायथन कोड def checklist(A): if