回溯法 leetcode 79 單詞搜尋

2021-09-26 14:29:49 字數 1253 閱讀 3087

回溯法,簡單理解,我覺得可以模擬走迷宮的過程。首先是找到迷宮的入口,然後順著一條路往下走,當遇到分叉路口的時候,將這個點記下來,然後在順著某一條往下走,如果走不通了,就再折回到分叉口,沿著另一條路繼續走。

這道題,輸入字串的第乙個字元,就可以模擬迷宮的入口,查詢字串的過程就可以理解為走迷宮的過程,可以使用遞迴,簡化重複**。

**如下:

(leetcode 上給出的答案,後面得自己再整理一下。)

private

boolean

marked;

// x-1,y

// x,y-1 x,y x,y+1

// x+1,y

private

int[

] direction =,,

,};// 盤面上有多少行

private

int m;

// 盤面上有多少列

private

int n;

private string word;

private

char

board;

public

boolean

exist

(char

board, string word)

n = board[0]

.length;

marked =

newboolean

[m][n]

;this

.word = word;

this

.board = board;

for(

int i =

0; i < m; i++)}

}return

false;}

//start 是陣列的匹配下標

private

boolean

dfs(

int i,

int j,

int start)

if(board[i]

[j]== word.

charat

(start))}

} marked[i]

[j]=

false;}

return

false;}

private

boolean

inarea

(int x,

int y)

LeetCode 79 單詞搜尋(回溯DFS)

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...

leetcode 79 單詞搜尋

本題算是乙個組合類的題,也類似於深度優先搜尋演算法 設定乙個與字母構成的陣列大小相同的陣列,用來儲存某個位置的字母是否被訪問過,標註為1表示已被訪問過,避免重複 每次要看i,j位置上下左右的字母是否等於單詞第t個位置的字母 進行深度優先搜尋 bool find std vector board,st...

leetcode 79 單詞搜尋

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回t...