मान लीजिए कि हमारे पास एक n x n मैट्रिक्स है जो एक शतरंज बोर्ड का प्रतिनिधित्व करता है। कुछ 1s और 0s हैं, जहाँ 1 एक रानी का प्रतिनिधित्व करता है और 0 एक खाली सेल का प्रतिनिधित्व करता है। हमें यह जांचना होगा कि बोर्ड एन-क्वीन पहेली का वैध समाधान है या नहीं। जैसा कि हम जानते हैं कि एक बोर्ड वैध एन-क्वीन समाधान का समाधान है जहां कोई भी दो रानियां एक-दूसरे पर हमला नहीं कर रही हैं।
तो, अगर इनपुट पसंद है
तो आउटपुट सही होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- n :=मैट्रिक्स की पंक्ति गणना
- पंक्तियाँ:=एक नया सेट, कॉलम:=एक नया सेट, डायग्स:=एक नया सेट, rev_diags:=एक नया सेट
- मैं के लिए 0 से n की सीमा में, करते हैं
- जे के लिए 0 से n की सीमा में, करें
- यदि मैट्रिक्स [i, j] 1 है, तो
- पंक्तियों में i डालें
- कोल्स में j डालें
- डायग्स में (i - j) डालें
- rev_diags में (i + j) डालें
- यदि मैट्रिक्स [i, j] 1 है, तो
- जे के लिए 0 से n की सीमा में, करें
- सही लौटें जब पंक्तियों का आकार, कॉलम का आकार, डायग का आकार, rev_diags का आकार n के समान हो, अन्यथा गलत
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution: def solve(self, matrix): n = len(matrix) rows = set() cols = set() diags = set() rev_diags = set() for i in range(n): for j in range(n): if matrix[i][j]: rows.add(i) cols.add(j) diags.add(i - j) rev_diags.add(i + j) return len(rows) == len(cols) == len(diags) == len(rev_diags) == n ob = Solution() matrix = [ [0, 0, 0, 1, 0], [0, 1, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 1, 0, 0], [1, 0, 0, 0, 0] ] print(ob.solve(matrix))
इनपुट
matrix = [ [0, 0, 0, 1, 0], [0, 1, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 1, 0, 0], [1, 0, 0, 0, 0] ]
आउटपुट
True