मान लीजिए कि हमारे पास X और O वाला 2D बोर्ड है। X से घिरे सभी क्षेत्रों को कैप्चर करें। उस क्षेत्र में सभी Os को Xs में बदलकर एक क्षेत्र कैप्चर किया जाता है।
X | X | X | X |
X | ओ | ओ | X |
X | X | ओ | X |
X | ओ | X | X |
आउटपुट चलाने के बाद होगा
X | X | X | X |
X | X | X | X |
X | X | X | X |
X | ओ | X | X |
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि बोर्ड मौजूद नहीं है, तो खाली बोर्ड लौटाएं
- i के लिए 0 से लेकर पंक्तियों की संख्या तक - 1 -
- अगर बोर्ड[i, 0] ='O', तो make_one(board, i, 0)
- यदि बोर्ड[i, पंक्ति की लंबाई - 1] ='O', तो make_one(बोर्ड, i, पंक्ति की लंबाई -1)
- i के लिए 0 से लेकर कॉल्स की संख्या तक - 1 −
- अगर बोर्ड[0, i] ='O', तो make_one(board, 0, i)
- यदि बोर्ड [पंक्ति की संख्या -1, i] ='O', तो make_one(बोर्ड, पंक्ति की संख्या -1, i)
- i के लिए 0 से लेकर पंक्तियों की संख्या तक
- जे के लिए 0 से लेकर कॉल्स की संख्या तक
- यदि बोर्ड[i, j] ='O', तो बोर्ड[i, j] ='X', अन्यथा 1 के लिए, बोर्ड[i, j] ='O'
- जे के लिए 0 से लेकर कॉल्स की संख्या तक
- make_one जैसा होगा -
- अगर मैं <0 या j <0 या i>=पंक्ति गणना या j>=कॉल गणना या बोर्ड[i, j] ='X' या बोर्ड[i, j] ='1', तो वापस आएंली>
- बोर्ड[i, j] :=1
- कॉल करें make_one(voard, i + 1, j), make_one(voard, i-1, j), make_one(voard, i, j + 1), make_one(voard, i, j-1)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def solve(self, board): if not board: return board for i in range(len(board)): if board[i][0]=='O': self.make_one(board,i,0) if board[i][len(board[0])-1] == 'O': self.make_one(board,i,len(board[0])-1) for i in range(len(board[0])): if board[0][i]=='O': self.make_one(board,0,i) if board[len(board)-1][i] == 'O': self.make_one(board,len(board)-1,i) for i in range(len(board)): for j in range(len(board[i])): if board[i][j]=='O': board[i][j]='X' elif board[i][j]=='1': board[i][j]='O' return board def make_one(self, board,i,j): if i<0 or j<0 or i>=len(board) or j>=len(board[0]) or board[i][j]=='X' or board[i] [j]=='1': return board[i][j]='1' self.make_one(board,i+1,j) self.make_one(board,i-1,j) self.make_one(board,i,j+1) self.make_one(board,i,j-1) ob1 = Solution() print(ob1.solve([["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]))
इनपुट
[["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]
आउटपुट
[['X', 'X', 'X', 'X'], ['X', 'X', 'X', 'X'], ['X', 'X', 'X', 'X'], ['X', 'O', 'X', 'X']]