給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。
示例:board =
[[『a』,『b』,『c』,『e』],
[『s』,『f』,『c』,『s』],
[『a』,『d』,『e』,『e』]
]回溯可參考:全排列(dfs回溯實現)
1、direction 記錄移動的方向,代表左,代表上,代表右,代表下;
2、使用回溯的思想,當前字元相同後,下乙個字元的判斷可以使用回溯實現。(從左、上、右、下四個方向進行回溯,方向的順序無特殊規定)
class
solution,,
,};public
boolean
exist
(char
board, string word)}}
return
false;}
/** * dfs
* * @param start 代表word中的第幾個字元
* @param x,y 代表當前判斷字元的位置
*///回溯判斷單詞是否存在二維網格中
public
boolean
dfs(
char
board, string word,
int start,
int x,
int y,
boolean
used)
//不是最後乙個字元,則判斷當前字元和word中對應的字元是否相同
if(board[x]
[y]== word.
charat
(start))}
} used[x]
[y]=
false;}
//不相同,直接返回false
return
false;}
public
boolean
inmatrix
(int x,
int y,
char
board)
}
79 單詞搜尋(dfs 回溯)
給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。board a b c e s f c s a d e e 給定 word abcced 返回 tru...
LeetCode 79 單詞搜尋(回溯DFS)
給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...
dfs 單詞搜尋
給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。board a b c e s f c s a d e e 給定 word abcced 返回 tru...