面試題12 矩陣中的路徑

2021-09-08 06:43:05 字數 1222 閱讀 1420

// 題目:請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有

// 字元的路徑。路徑可以從矩陣中任意一格開始,每一步可以在矩陣中向左、右、

// 上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入

// 該格仔。例如在下面的3×4的矩陣中包含一條字串「bfce」的路徑(路徑中的字

// 母用下劃線標出)。但矩陣中不包含字串「abfb」的路徑,因為字串的第乙個

// 字元b佔據了矩陣中的第一行第二個格仔之後,路徑不能再次進入這個格仔。

// a b t g

// c f

c s

// j d e h

這是乙個可以用回溯演算法解決的問題。

首先任選乙個格仔開始走,如果第i次選擇的這個格仔的字元,恰好對應目標字串第i個字元,

可以從這個格仔的上下左右開始嘗試尋找第i+1個字元,找到符合條件的繼續往下走,否則就回退上一步。

(邊邊角角的就沒有四個格仔,相鄰的只有2個或者3個,需要注意判斷)

那麼什麼時候截止呢?當目標字串的字元為'\0'就說明找到了一條路,函式就可以返回了。

由於題目的要求,進入乙個格仔後無法再次進入,所以應該有乙個bool型別的陣列記錄已經組走過的路徑。

bool haspath()

return false;

}bool haspathcore()

}return;

}

bool haspath(const char* matrix, int rows, int cols, const char* str) 

} //釋放標記記憶體

delete visited;

return false;

}bool haspathcore(const char* matrix, int rows, int cols, int row, int col,

const char* str, int& pathlength, bool* visited)

} return haspath;

}

劍指offer第二版面試題12

【劍指offer學習】【面試題66:矩陣中的路徑】

posted @

2018-08-07 20:04

朕蹲廁唱忐忑 閱讀(

...)

編輯收藏

面試題12 矩陣中的路徑

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

面試題12 矩陣中的路徑

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

面試題12 矩陣中的路徑

採用深度優先遍歷的策略,從深度方向進行匹配,如果相等則返回true,否則返回false。像這種遞迴的解法,重要的是要分析出邊界,分析出一次搜尋要做什麼事情。邊界或者返回條件 當前搜尋的字元超越矩陣邊界,或者該字元與word對應字元不相等,同時要求不走相同的路。此時,返回false。如果滿足上述三個條...