मान लीजिए हमारे पास एक मैट्रिक्स मैट है। इस प्रकार कुछ भिन्न मान हैं मैट्रिक्स की कोशिकाओं में इन 3 वर्णों में से कोई भी हो सकता है
- 0 खाली क्षेत्र के लिए।
- बम के लिए 1।
- दुश्मनों के लिए 2.
अब बम एक सिरे से दूसरे सिरे तक केवल क्षैतिज और ऊर्ध्वाधर दिशाओं में ही विस्फोट कर सकता है। हमें यह जांचना होगा कि बम फटने पर सभी दुश्मन मर जाएंगे या नहीं।
तो, अगर इनपुट पसंद है
0 | 0 | 2 | 0 |
0 | 1 | 0 | 0 |
0 | 2 | 0 | 0 |
0 | 0 | 1 | 0 |
तो आउटपुट सही होगा, क्योंकि [1, 1] जगह पर बम [2, 1] पर दुश्मन को भर सकता है और [0, 2] पर दुश्मन [3, 2] पर रखे बम से मारा जाएगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- r :=चटाई की पंक्ति संख्या
- c :=चटाई की कुल संख्या
- i :=0, j :=0, x :=0, y :=0
- मैं के लिए 0 से r -1 की सीमा में, करो
- जे के लिए 0 से सी -1 की सीमा में, करो
- अगर चटाई[i, j] 1 है, तो
- x के लिए 0 से r-1 की सीमा में, करें
- यदि मैट[x, j] 1 नहीं है, तो
- चटाई[x, j] :=0
- यदि मैट[x, j] 1 नहीं है, तो
- y के लिए 0 से c-1 की श्रेणी में, करें
- अगर मैट[i, y] 1 नहीं है, तो
- चटाई[i, y] :=0
- अगर मैट[i, y] 1 नहीं है, तो
- x के लिए 0 से r-1 की सीमा में, करें
- अगर चटाई[i, j] 1 है, तो
- जे के लिए 0 से सी -1 की सीमा में, करो
- मैं के लिए 0 से r -1 की सीमा में, करो
- जे के लिए 0 से सी -1 की सीमा में, करो
- यदि चटाई[i, j] 2 है, तो
- झूठी वापसी
- यदि चटाई[i, j] 2 है, तो
- जे के लिए 0 से सी -1 की सीमा में, करो
- सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
def solve(mat): r = len(mat) c = len(mat[0]) i, j, x, y = 0, 0, 0, 0 for i in range(r): for j in range(c): if mat[i][j] == 1: for x in range(r): if mat[x][j] != 1: mat[x][j] = 0 for y in range(c): if mat[i][y] != 1: mat[i][y] = 0 for i in range(r): for j in range(c): if mat[i][j] == 2: return False return True matrix = [ [0,0,2,0], [0,1,0,0], [0,2,0,0], [0,0,1,0] ] print(solve(matrix))
इनपुट
[ [0,0,2,0], [0,1,0,0], [0,2,0,0], [0,0,1,0] ]
आउटपुट
True