dfs 單詞搜尋

2021-10-08 20:06:35 字數 990 閱讀 8943

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。

單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。

board =

[[『a』,『b』,『c』,『e』],

[『s』,『f』,『c』,『s』],

[『a』,『d』,『e』,『e』]

]給定 word = 「abcced」, 返回 true

給定 word = 「see」, 返回 true

給定 word = 「abcb」, 返回 false

採用dfs+回溯的思想

從二維網格的每乙個點依次開始,進行dfs,如果成功則返回true

不成功則回溯一步

class

solution,,

,};public

:bool

exist

(vectorchar

>>

& board, string word)

return ans;

}void

dfs(

int x,

int y,

int index)

marked[x]

[y]=1;

for(

int i=

0;i<

4;i++)if

(x+dir[i][0

]>=

0&&x+dir[i][0

]]>=

0&&y+dir[i][1

]marked[x+dir[i][0

]][y+dir[i][1

]]==0

) marked[x]

[y]=0;

}}};

79 單詞搜尋(dfs)

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

79 單詞搜尋(dfs 回溯)

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

單詞搜尋(DFS回溯實現)

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