面試題12 矩陣中的路徑

2021-10-02 10:58:17 字數 1185 閱讀 8602

請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。例如,在下面的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。如果滿足上述三個條...