程式語言 - LeetCode - C++ - 79. Word Search



題目:


解答:

class Solution {
public:
    bool exist(vector<vector<char>>& board, string word) {
        int m = board.size();
        int n = board[0].size();

        auto dfs = [&](this auto&& dfs, int i, int j, int k) -> bool {
            if (k == word.size()) {
                return true;
            }

            if (i < 0 || i >= m || j < 0 || j >= n || board[i][j] != word[k]) {
                return false;
            }

            char t = board[i][j];
            board[i][j] = '#';
            bool found = dfs(i + 1, j, k + 1) ||
                dfs(i - 1, j, k + 1) ||
                dfs(i, j + 1, k + 1) ||
                dfs(i, j - 1, k + 1);
            board[i][j] = t;

            return found;
        };

        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                if (dfs(i, j, 0)) {
                    return true;
                }
            }
        }

        return false;
    }
};