(劍指offer)面試題12 矩陣中的路徑

2021-10-05 14:01:43 字數 1122 閱讀 3149

請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如,在下面的3×4的矩陣中包含一條字串「bfce」的路徑(路徑中的字母用加粗標出)。

[

["a"

,"b"

,"c"

,"e"],

["s"

,"f"

,"c"

,"s"],

["a"

,"d"

,"e"

,"e"

]]

但矩陣中不包含字串「abfb」的路徑,因為字串的第乙個字元b佔據了矩陣中的第一行第二個格仔之後,路徑不能再次進入這個格仔。

深度優先搜尋。dfs 通過遞迴,先朝乙個方向搜到底,再回溯至上個節點,沿另乙個方向搜尋,以此類推。注意如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。

public

static

boolean

exist

(char

board, string word)}}

}return

false;}

public

static

boolean

search

(char

board,

int i,

int j,

string word)}if

(j-1

>=

0&& board[i]

[j-1

]== word.

charat(0

))}if

(i+1

[j]== word.

charat(0

))}if

(i-1

>=

0&& board[i-1]

[j]== word.

charat(0

))} board[i]

[j]= tmp;

return

false

;}

《劍指offer》面試題12 矩陣中的路徑

題目 請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如在下面的3 4的矩陣中包含一條字串 bfce 的路徑 路徑中的字母用下劃線標出 ...

劍指Offer 面試題12(矩陣中的路徑)

這裡是引用 題目描述 請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的徑。路徑可以從矩陣中任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如在下面的3 4的矩陣中包含一條字串 bfce 的路徑 路徑中的字母...

劍指offer面試題12 矩陣中的路徑

a b t g c f c s j d e h 可以用回溯法來做這道題,首先,在矩陣中任選乙個格仔作為路徑的起點。假設矩陣中某個格仔的字元為ch,並且這個格仔對應於路徑上的第i個字元。如果路徑上的第i個字元不是ch,那麼這個格仔不可能處在路徑上的第i個位置。如果路徑上的第i個字元正好是ch,那麼到相...