Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> 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

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • หากไม่มีกระดาน ให้คืนกระดานเปล่า

  • สำหรับฉันในช่วง 0 ถึงจำนวนแถว - 1 −

    • ถ้า board[i, 0] =‘O’ แล้ว make_one(board, i, 0)

    • ถ้าบอร์ด[i, ความยาวของแถว - 1] ='O' แล้ว make_one(บอร์ด, i, ความยาวของแถว - 1)

  • สำหรับฉันในช่วง 0 ถึงจำนวน cols - 1 −

    • ถ้าบอร์ด[0, i] ='O' แล้ว make_one(บอร์ด, 0, i)

    • ถ้า board[จำนวนแถว - 1, i] ='O' แล้ว make_one(บอร์ด, นับแถว - 1, 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)

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

class Solution(object):def Solve(self, board):""" :type board:List[List[str]] :rtype:None ไม่ต้องส่งคืนใดๆ ให้แก้ไขบอร์ดในตำแหน่งแทน """ ถ้าไม่ใช่บอร์ด: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) สำหรับฉันในช่วง (len(board)):สำหรับ j ในช่วง (len(board[i])):if board[i][j]=='O':board[i][j]='X' elif board[i][j]=='1':board[i][j]='O' def make_one(self, board,i,j):if i<0 or j<0 or i>=len(board) หรือ j>=len(board[0]) หรือ board[i][j]=='X' or board[i][j]=='1':return board[i][ j]='1' self.make_one(กระดาน,i+1,j ) self.make_one(บอร์ด,i-1,j) self.make_one(บอร์ด,i,j+1) self.make_one(บอร์ด,i,j-1)

อินพุต

<ก่อนหน้า[["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"]]