劍指offer 65 矩陣中的路徑

2021-10-03 20:45:51 字數 1234 閱讀 1105

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

思路:回溯法

matrix矩陣中所有點作為起點,然後依據這個點進行向四個方向的遞迴;

在遞迴中,不滿足題目的條件會自動出棧回到上乙個狀態,繼續再找這個符合條件的格仔的四周是否存在符合條件的格仔,

直到k到達末尾或者不滿足遞迴條件就停止.

class solution 

bool *visited = new bool[rows*cols];//標記是否訪問過

memset(visited,false,rows*cols);

int k = 0;

///迴圈遍歷矩陣,找到起點等於str第乙個元素的值,再遞迴判斷四周是否有符合條件的格仔

for(int row=0;row=rows || j<0 || j>=cols || matrix[index]!=str[k] || visited[index]==true)

if(str[k+1]=='\0') return true;//字串已經查詢結束,說明找到該路徑了

visited[index] = true;//標記訪問過

//向四個方向【向左,向右,向上,向下】進行遞迴查詢

劍指offer 65 矩陣中的路徑

利用回溯法 回溯演算法概念 在許多遞迴問題當中,我們採取的方法都是窮盡所有的可能,從而找出合法的解。但是在某些情況下,當遞迴到某一層的時候,根據設定的判斷條件,可以 judge 此解是不合法的。在這種情況下,我們就沒必要再進行深層次的遞迴,從而可以提高演算法效率。這一類演算法我們稱為 回溯法 設定的...

劍指offer65 矩陣中的路徑

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

65 劍指offer 矩陣中的路徑

請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向左,向右,向上,向下移動乙個格仔。如果一條路徑經過了矩陣中的某乙個格仔,則該路徑不能再進入該格仔。例如 經典的回溯法的問題。用乙個狀態陣列儲存之前訪問過的字元,然後再分別...