3 × 4 board · word = "ABCCED"
A
B
C
E
S
F
C
S
A
D
E
E
Backtracking · DFS mark & unmark
▸1exist(word):2 for each start cell == word[0]:3 if dfs(r, c, 0): return true4dfs(r, c, i): // board[r][c] == word[i]5 mark (r, c) used6 if i == last index: return true7 for each neighbour (nr, nc):8 if used or letter != word[i+1]: skip9 if dfs(nr, nc, i+1): return true10 unmark (r, c) // backtrack11 return false
state
- wordABCCED
- len6
- size3 × 4