劍指Offer六十五 矩陣中的路徑

2021-10-04 21:53:03 字數 1153 閱讀 5970

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

矩陣中包含一條字串"bcced"的路徑,但是矩陣中不包含"abcb"路徑,因為字串的第乙個字元b佔據了矩陣中的第一行第二個格仔之後,路徑不能再次進入該格仔。

首先第一思路就是遞迴迴圈判斷,和樹的操作相識,因為對於給定的矩陣寬度和高度都是確定的,我們只需要在其內部定義迴圈變數在邊界範圍內進行迴圈遞迴處理,同時對路徑進行記錄處理不像是對於二叉樹的節點和(在向下查詢過程中,乙個可以成功滿足或者是不滿足都要進行回退的處理)這裡也利用遞迴來解決。最後判斷能不能夠遍歷完整個str小字串陣列。

public

class

solution}}

return

false;}

private

boolean

path

(char

matrix,

int i,

int j,

int rows,

int cols,

char

str,

boolean

flag,

int k)

if(k==str.length-1)

return

true

; flag[index]

=true;if

(path

(matrix,i+

1,j,rows,cols,str,flag,k+1)

||path

(matrix,i-

1,j,rows,cols,str,flag,k+1)

||path

(matrix,i,j+

1,rows,cols,str,flag,k+1)

||path

(matrix,i,j-

1,rows,cols,str,flag,k+1)

)return

true

; flag[index]

=false

;return

false;}

}

劍指Offer 六十五 矩陣中的路徑

解法1 首先,遍歷這個矩陣,我們很容易就能找到與字串matrix中第乙個字元相同的矩陣元素p 0 然後遍歷p 0 的上下左右四個字元,如果有和字串matrix中下乙個字元相同的,就把那個字元當作下乙個字元 下一次遍歷的起點 如果沒有,就需要回退到上乙個字元,然後重新遍歷。為了避免路徑重疊,需要乙個輔...

劍指offer 矩陣中的路徑

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

劍指offer 矩陣中的路徑

請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向左,向右,向上,向下移動乙個格仔。如果一條路徑經過了矩陣中的某乙個格仔,則之後不能再次進入這個格仔。注意 樣例matrix a b c e s f c s a d e e...