演算法練習 被圍繞的區域

2021-10-09 02:00:16 字數 1327 閱讀 6421

題目描述:

給定乙個二維的矩陣,包含 'x' 和 'o'(字母 o)。

找到所有被 'x' 圍繞的區域,並將這些區域裡所有的 'o' 用 '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

解釋:被圍繞的區間不會存在於邊界上,換句話說,任何邊界上的 'o' 都不會被填充為 'x'。 任何不在邊界上,或不與邊界上的 'o' 相連的 'o' 最終都會被填充為 'x'。如果兩個元素在水平或垂直方向相鄰,則稱它們是「相連」的。

從題目的理解看,邊界上的o沒有被x包圍,不能變x,同樣與邊界的o相連的o也是被看做沒有被x包圍,因此也不能變成x。因此我們可以得出這樣的結論,凡是邊界的o,以及相連的o都不能變x,其餘的ox

所以我們可以對邊界上的o進行深度遍歷或是廣度遍歷,把這些o用另外的符號代替(這裡我用a代替),然後再遍歷整個矩陣,把a的元素改為o,其餘的改為x

//code

class

solution

// 對左右邊界的'o'進行深度遍歷

for(

int i =

0;i)//對標記的a的修改為『o』,其餘改為『x』

for(

int i =

0;i)else

if(board[i]

[j]==

'o')}}

}public

void

dfs(

char

board,

int x,

int y)

board[x]

[y]=

'a';

dfs(board,x+

1,y)

;dfs

(board,x-

1,y)

;dfs

(board,x,y+1)

;dfs

(board,x,y-1)

;}}

演算法5 被圍繞的區域

給定乙個二維的矩陣,包含 x 和 o 字母 o 找到所有被 x 圍繞的區域,並將這些區域裡所有的 o 用 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 解釋 被圍繞的區間不會存...

被圍繞的區域

被圍繞的區域 給乙個二維的矩陣,包含 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 x o x x class unionfi...

被圍繞的區域

給定乙個二維的矩陣,包含 x 和 o 字母 o 找到所有被 x 圍繞的區域,並將這些區域裡所有的 o 用 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解釋 被圍繞的區間不會存在於...