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

2021-10-03 02:26:20 字數 887 閱讀 3098

問題:請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向左,向右,向上,向下移動乙個格仔。如果一條路徑經過了矩陣中的某乙個格仔,則該路徑不能再進入該格仔。 例如

自己對題目的補充解釋:字串與路徑順序需保持一致

輸入:char* matrix, int rows, int cols, char* str

輸出:是否存在路徑

思路:回溯法(將路徑看作乙個棧)

開闢與矩陣大小一致的bool矩陣,判斷路徑是否進入了格仔。

任選乙個格仔作為路徑起點,

如果當前節點與第i個字元一致,則在該格仔周圍比對是否存在與第i+1個字元匹配的格仔,不存在則回溯至上乙個格仔。

如果當前節點與第i個字元不一致,則回退到第i-1個字元繼續比對未進入過的格仔。

**:

#include class solution {

public:

bool haspathcore(const char* matrix, int rows, int cols, int row, int col, const char* str, int& pathlength, bool* visited)

{if(str[pathlength]=='\0')

return true;

bool haspath=false;

// explore neighborhood

if(row>=0&&row=0&&col複雜度分析:時間複雜度為

《劍指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,那麼到相...