# [79\. Word Search](https://leetcode.com/problems/word-search/) - 在矩陣裡找字存不存在。 - Backtracking 終止條件有兩個:return false 的狀況跟順利搜尋完的狀況。 :::spoiler Solution ```cpp= class Solution { public: bool exist(vector<vector<char>>& board, string word) { int m = board.size(), n = board[0].size(); for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { if (board[i][j] == word[0] && backtracking(board, word, i, j, 0)) { return true; } } } return false; } bool backtracking(vector<vector<char>>& board, string word, int i, int j, int start) { int m = board.size(), n = board[0].size(); if (i < 0 || j < 0 || i >= m || j >= n || board[i][j] != word[start]) { return false; } if (start == word.size() - 1) return true; char temp = board[i][j]; board[i][j] = '#'; bool res = backtracking(board, word, i + 1, j, start + 1) || \ backtracking(board, word, i - 1, j, start + 1) || \ backtracking(board, word, i, j + 1, start + 1) || \ backtracking(board, word, i, j - 1, start + 1); board[i][j] = temp; return res; } }; ``` - 時間複雜度:$O(n \cdot 3^L)$ - 空間複雜度:$O(L)$ :::