สมมติว่าเรามีกระดาน 2 มิติที่มี 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 |
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- หากไม่มีกระดาน ให้คืนกระดานเปล่า
- สำหรับ i ในช่วง 0 ถึงจำนวนแถว – 1 −
- ถ้า board[i, 0] =‘O’ แล้ว make_one(board, i, 0)
- ถ้า board[i, length of row - 1] =‘O’ แล้ว make_one(board, i, length of row – 1)
- สำหรับ i ในช่วง 0 ถึงจำนวน cols – 1 −
- ถ้าบอร์ด[0, i] ='O' จากนั้น make_one(บอร์ด, 0, i)
- ถ้ากระดาน[นับแถว – 1, i] ='O' แล้ว make_one(กระดาน, การนับแถว – 1, i)
- สำหรับ i ในช่วง 0 ถึงจำนวนแถว
- สำหรับ j ในช่วง 0 ถึงจำนวน cols
- ถ้า board[i, j] ='O' แล้ว board[i, j] ='X' หรือสำหรับ 1, board[i, j] ='O'
- สำหรับ j ในช่วง 0 ถึงจำนวน cols
- Make_one จะเป็นเช่น −
- ถ้า i <0 หรือ j <0 หรือ i>=จำนวนแถวหรือ j>=col count หรือ board[i, j] ='X' หรือ board[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)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
คลาส 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) สำหรับ 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):ถ้า i<0 หรือ j<0 หรือ i>=len(board) หรือ j>=len(board[0]) หรือ board[i][j]=='X' หรือ board[i] [j]=='1':return board[i][j]='1' self.make_one(board,i+1,j) self.make_one(board,i-1,j) ตนเอง .make_one(บอร์ด,i,j+1) self.make_one(บอร์ด,i,j-1)ob1 =โซลู พิมพ์()(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']]