請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑就不能再次進入該格仔。例如,在下面的3x4的矩陣中包含一條字串「bfce」的路徑。但矩陣中不包含字串「abfb」的路徑,因為字串的第乙個字元b佔據了矩陣中的第一行第二個格仔之後,路徑不能再次進入這個格仔。
a b t g
c f c s
j d e h
思路:沒什麼特別好的想法,因為每個點都可能是起點,所以一波遍歷在所難免。然後再來訪問周圍四點,如果符合目標,則繼續訪問周圍四點,這就是乙個重複操作。又因訪問過了不能再訪問,那麼每個點都要有個bool來判斷是否訪問過。那麼就要寫兩個方法來實現了。
public static bool haspath(char matrix, int rows, int cols, char str)
}return false;
}private static bool haspathcore(char matrix, int rows, int cols, char str, bool visited,
int row, int col, int pathlength)
}return haspath;
}想法:「這題用的是回溯法,可以看成是乙個盞」是書中意思,確實讓我體會到程式設計設計的精妙。
面試題12 矩陣中的路徑
題目 請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有 字元的路徑。路徑可以從矩陣中任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入 該格仔。例如在下面的3 4的矩陣中包含一條字串 bfce 的路徑 路徑中的字 母用下劃線...
面試題12 矩陣中的路徑
請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如,在下面的3 4的矩陣中包含一條字串 bfce 的路徑 路徑中的字母用下劃線標出 但...
面試題12 矩陣中的路徑
題目描述 請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如,在下面的 3 4的矩陣中包含一條字串 bfce 的路徑 路徑中的字母用加...