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