請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。
路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向左,向右,向上,向下移動乙個格仔。
如果一條路徑經過了矩陣中的某乙個格仔,則之後不能再次進入這個格仔。
注意:輸入的路徑不為空;
所有出現的字元均為大寫英文本母;
樣例matrix=
[[「a」,「b」,「c」,「e」],
[「s」,「f」,「c」,「s」],
[「a」,「d」,「e」,「e」]
]str=「bcce」 , return 「true」
str=「asae」 , return 「false」
首先題目讀錯了意思,以為是隨便選擇,不能連續路徑,因此初始化的時候只選擇了[0][0]點,後重新審題後修改了多了兩層迴圈;
判斷越界的時候將if(i < 0 || j<0 || i>=row || j>=col || visited[i][j] || (matrix[i][j]!=str.charat(len)))
放到了遍歷的外層,導致一直被visited;
第乙個點的判斷,開始的樣例的路徑頭不在第乙個||樣例集合只有乙個元素,因此預設了滿足條件,當樣例只有乙個元素的時候沒法滿足,所以把遍歷的元素加了乙個原點
static int di = ; static int dj = ;
class
solution
;static
int[
]dj =
;static
boolean
dfs(
char
matrix, string str,
int i,
int j,
int row,
int col,
boolean
visited,
int len)
for(
int k =
0; k <=
4; k++
) visited[i]
[j]=
true;if
(dfs
(matrix, str, i, j, row, col, visited, len+1)
) visited[i]
[j]=
false
; i -= di[k]
; j -= dj[k];}
return
false;}
public
boolean
haspath
(char
matrix, string str)
int row = matrix.length;
int col = matrix[0]
.length;
for(
int l =
0; l< row ; l++)}
}return
false;}
}
回溯法 23 矩陣中的路徑
演算法思想 嘗試迷宮的每個位置作為起點,進行深度優先搜尋,給每次搜尋計數為u,如果matrix x y str u 則u 1,匹配失敗returnfalse,如果u str。size 1表示匹配完成,return true。如果所有位置都嘗試未成功,則return false。class solut...
矩陣中的路徑 機械人路徑 DFS
q1 請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如,在下面的3 4的矩陣中包含一條字串 bfce 的路徑。a b c e s f...
劍指offer 矩陣中的路徑(dfs,回溯)
請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向左,向右,向上,向下移動乙個格仔。如果一條路徑經過了矩陣中的某乙個格仔,則該路徑不能再進入該格仔。例如 回溯法,思路如下 0.根據給定陣列,初始化乙個標誌位陣列,初始化為...