回溯法 矩陣中的路徑問題(java)

2021-08-02 01:31:05 字數 1474 閱讀 1844

package cn.csu.offers;

/** * 矩陣中的路徑

* @author tiekai ba 2023年6月3日

* */

public class offer_66

boolean visit = new boolean[rows*cols];//標記訪問過的矩陣座標位置,初始化為false

for(int i = 0; i < rows; i ++)

}} return false;

} /**

* 回溯法匹配字串路徑

* @param matrix 矩陣字元陣列

* @param rows 矩陣行數

* @param cols 矩陣列數

* @param i 當前匹配矩陣元素的行座標

* @param j 當前匹配矩陣元素的列座標

* @param str 匹配字串

* @param k 當前匹配字串元素的下標

* @param visit 標記匹配過的矩陣元素位置

* @return

*/private boolean haspathcore(char matrix, int rows, int cols, int row,

int col, char str, int current, boolean visit)

visit[index] = true;//當前k下標的字元匹配成功

if(current == str.length-1)

current ++;//準備匹配下乙個字元

if(haspathcore(matrix, rows, cols, row-1, col, str, current, visit)||//試探當前字元的上方字元

haspathcore(matrix, rows, cols, row+1, col, str, current, visit)||//試探當前字元的下方字元

haspathcore(matrix, rows, cols, row, col-1, str, current, visit)||//試探當前字元的左方字元

haspathcore(matrix, rows, cols, row, col+1, str, current, visit)//試探當前字元的右方字元

)current --;//如果四個方向的都不對,表明上乙個字元匹配不對,回退

visit[index] = false;

return false;

} public static void main(string args) ;

string str = "abceseecfdas";

offer_66 offer_66 = new offer_66();

system.out.println(offer_66.haspath(matrix, 3, 4, str.tochararray()));

}}

回溯法 矩陣中的路徑問題(java)

package cn.csu.offers 矩陣中的路徑 author tiekai ba 2017年6月3日 public class offer 66 boolean visit new boolean rows cols 標記訪問過的矩陣座標位置,初始化為false for int i 0 i...

回溯法 矩陣中的路徑

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

回溯法 矩陣中的路徑

題目 請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。這是乙個可以用回溯法解決的經典題。首先,在矩陣中任選乙個格仔作為路徑的起點。假設矩...