回溯法 矩陣中的路徑

2021-10-14 14:08:21 字數 871 閱讀 5581

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

[[「a」,「b」,「c」,「e」],

[「s」,「f」,「c」,「s」],

[「a」,「d」,「e」,「e」]]

但矩陣中不包含字串「abfb」的路徑,因為字串的第乙個字元b佔據了矩陣中的第一行第二個格仔之後,路徑不能再次進入這個格仔。

題目鏈結

這是乙個典型的回溯搜尋問題,由於是尋找對應的路徑,即尋找排列組合問題,普通的暴力搜尋已經完成不了任務,因此我們可以採用回溯法,即在遞迴的基礎上進行剪枝;

首先還是需要構造乙個迴圈,找到第乙個點後再進行遞迴尋找後面的點,如果路徑上面所有的元素都找到了則返回true,如果由當前點出發造成「堵路」則開始下乙個點,直至找到正確的路徑或者迴圈結束返回false;

下面結合**進行分析;

所謂的尋找起始點即通過迴圈遍歷陣列中的元素;

回溯法 矩陣中的路徑

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

回溯法 23 矩陣中的路徑

演算法思想 嘗試迷宮的每個位置作為起點,進行深度優先搜尋,給每次搜尋計數為u,如果matrix x y str u 則u 1,匹配失敗returnfalse,如果u str。size 1表示匹配完成,return true。如果所有位置都嘗試未成功,則return false。class solut...

回溯法 矩陣中的路徑問題(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...