Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ขอบเขตโดยรอบใน Python


สมมติว่าเรามีกระดาน 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'
  • 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']]