leetcode79單詞搜尋

2021-10-06 02:06:29 字數 1295 閱讀 2130

題目:

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

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

示例:board =

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

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

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

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

給定 word = 「see」, 返回 true

給定 word = 「abcb」, 返回 false

題目思路:

1、單詞必須是相鄰的字母組成

2、每個單詞接下來可上下左右

3、單詞一旦被使用之前 要用visited=true

4、使用完之後,要將visited=false;

5、根據示例,可知,開始的board i,j可以不是第乙個元素0,0

6、總結上述 使用回溯

6.1 回溯出口 index==word.length() -->flag=true;

6.2 做出選擇

6.3 四種走法且判斷四種走法獲得的board值與word中值是否相等&&索引是否有效&&該值(i,j)是否被訪問過。

6.4 撤銷選擇

**為:

class

solution,,

,};int m=0;

int n=0;

boolean flag;

public

boolean

exist

(char

board, string word)}}

}return

false;}

public

void

backtrack

(char

board, string word,

int index,

int x,

int y)

if(flag==

true

)

visited[x]

[y]=

true

;for

(int i=

0;ivisited[x]

[y]=

false;}

public

boolean

valid

(int x,

int y)

return

true;}

}

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...

Leetcode 79 單詞搜尋

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