65矩陣中的路徑

2021-10-03 04:41:18 字數 1642 閱讀 7435

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

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

基礎思想是島問題中的傳染解法。(很形象,一傳四,中的人繼續傳)

用乙個陣列作為標誌陣列,記錄路徑是否走過此處,1為走過

從[0][0]位置開始遍歷

題目中給的是一維陣列,先做轉化,確定二維轉成一維陣列此時的位置

遞迴終止即返回false的條件:下標越界;此位置已經走過;當前位置的值和字串要求不符

遞迴成功即返回true的條件:字串的索引到達最後一位

此時,四個格仔都不符合要求,將此處的標誌置0,換個路線走

public

static

boolean

haspath

(char

matrix,

int rows,

int cols,

char

str)

int[

] dpmatrix =

newint

[rows]

[cols]

;for

(int i =

0; i < rows; i++)}

}return

false;}

public

static

boolean

process

(char

matrix,

int rows,

int cols,

int row,

int col,

char

str,

int index,

int[

] dp)

if(index == str.length -1)

//沒走過

//開始將走過的位置置1

dp[row]

[col]=1

;if(process

(matrix, rows, cols, row +

1, col, str, index +

1, dp)

||process

(matrix, rows, cols, row -

1, col, str, index +

1, dp)

||process

(matrix, rows, cols, row, col +

1, str, index +

1, dp)

||process

(matrix, rows, cols, row, col -

1, str, index +

1, dp)

)//走不通,還原

dp[row]

[col]=0

;return

false

;}

65 矩陣中的路徑

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

65 劍指offer 矩陣中的路徑

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

劍指offer 65 矩陣中的路徑

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