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

2021-09-29 02:56:25 字數 1014 閱讀 7483

a    b    t    g

c   f 

c    s

j    d   e    h

可以用回溯法來做這道題,首先,在矩陣中任選乙個格仔作為路徑的起點。假設矩陣中某個格仔的字元為ch,並且這個格仔對應於路徑上的第i個字元。如果路徑上的第i個字元不是ch,那麼這個格仔不可能處在路徑上的第i個位置。如果路徑上的第i個字元正好是ch,那麼到相鄰格仔尋找路徑上的第i+1個字元。除矩陣邊界上的格仔之外,其他格仔都有4個相鄰的格仔。重複這個過程,直到路徑上的所有字元都在矩陣中找到相應的位置。

bool haspath(char* matrix, int rows, int cols, char* str)	}}

bool haspathcore(const char*matrix, int rows, int cols, int row,

int col, const char* str, int&pathlength, bool*visited)

} return haspath;

}

複習:

首先是要在矩陣所有的元素中找到字串開頭的第乙個字母的位置,然後遞迴地從這個位置開始去找剩下的路徑存不存在。注意回溯的方法,要在遇到不滿足條件的元素的時候,回到上一層的之前將pathlength減一,以及將這個元素設定為未訪問。

二刷**:

bool haspath(char* matrix, int rows, int cols, char* str)

} }delete visited;

return false;

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

} return haspath;

}

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

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

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

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

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

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