單詞搜尋(DFS回溯實現)

2021-10-24 05:43:29 字數 1112 閱讀 8104

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

示例: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...