請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如,在下面的3×4的矩陣中包含一條字串「bfce」的路徑(路徑中的字母用下劃線標出)。但矩陣中不包含字串「abfb」的路徑,因為字串的第乙個字元b佔據了矩陣中的第一行第二個格仔後,路徑不能再次進入格仔。
a b t g
c f
c s
j d e h
在矩陣中任選乙個格仔作為路徑的起點,對於每個格仔,都有4個方向:上、下、左、右(邊界格仔可以選擇的不足4個方向)。
package com.wsy;
public class main , , };
char aim = new char;
boolean haspath = haspath(map, aim);
system.out.println(haspath);
}public static boolean haspath(char map, char aim)
int rows = map.length;
int cols = map[0].length;
if (rows < 1 || cols < 1)
int index = 0;
boolean visit = new boolean[rows][cols];
for (int i = 0; i < rows; i++) }}
return false;
}public static boolean haspathcore(char map, int row, int col, char aim, int index, boolean visit)
int rows = map.length;
int cols = map[0].length;
boolean haspath = false;
if (row >= 0 && col >= 0 && row < rows && col < cols && !visit[row][col] && map[row][col] == aim[index])
}return haspath;
}}
面試題12 矩陣中的路徑
題目 請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有 字元的路徑。路徑可以從矩陣中任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入 該格仔。例如在下面的3 4的矩陣中包含一條字串 bfce 的路徑 路徑中的字 母用下劃線...
面試題12 矩陣中的路徑
題目描述 請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如,在下面的 3 4的矩陣中包含一條字串 bfce 的路徑 路徑中的字母用加...
面試題12 矩陣中的路徑
採用深度優先遍歷的策略,從深度方向進行匹配,如果相等則返回true,否則返回false。像這種遞迴的解法,重要的是要分析出邊界,分析出一次搜尋要做什麼事情。邊界或者返回條件 當前搜尋的字元超越矩陣邊界,或者該字元與word對應字元不相等,同時要求不走相同的路。此時,返回false。如果滿足上述三個條...