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