給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。
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回溯實現 ...