diff --git a/solution/79/main.go b/solution/79/main.go new file mode 100644 index 0000000..1852528 --- /dev/null +++ b/solution/79/main.go @@ -0,0 +1,31 @@ +package main + +func exist(board [][]byte, word string) bool { + for i := 0; i < len(board); i++ { + for j := 0; j < len(board[0]); j++ { + if board[i][j] == word[0] && dfs(board, i, j, 0, word) { + return true + } + } + } + return false +} + +func dfs(board [][]byte, i, j, count int, word string) bool { + if count == len(word) { + return true + } + + if i < 0 || i >= len(board) || j < 0 || j >= len(board[0]) || board[i][j] != word[count] { + return false + } + + temp := board[i][j] + board[i][j] = '*' + found := dfs(board, i+1, j, count+1, word) || + dfs(board, i-1, j, count+1, word) || + dfs(board, i, j+1, count+1, word) || + dfs(board, i, j-1, count+1, word) + board[i][j] = temp + return found +}