美文网首页
79. Word Search

79. Word Search

作者: jecyhw | 来源:发表于2019-06-02 22:12 被阅读0次

    题目链接

    https://leetcode.com/problems/word-search/

    解题思路

    dfs

    代码

    int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
    class Solution {
    public:
        bool exist(vector<vector<char>>& board, string word) {
            if (board.empty()) {
                return true;
            }
            vector<vector<bool>> mark(board.size(), vector<bool>(board[0].size(), false));
            for (int i = 0; i < board.size(); ++i) {
                for (int j = 0; j < board[i].size(); ++j) {
                    if (dfs(board, mark, i, j, word, 0)) {
                        return true;
                    }
                }
            }
            return false;
        }
    
        bool dfs(vector<vector<char>>& board, vector<vector<bool>> &mark, int n, int m, string &word, int p) {
            if (board[n][m] == word[p]) {
                if (word.length() == p + 1) {
                    return true;
                }
                
                mark[n][m] = true;
                for (int i = 0; i < 4; ++i) {
                    int n1 = n + dir[i][0], m1 = m + dir[i][1];
                    if (n1 < 0 || n1 >= board.size() || m1 < 0 || m1 >= board[0].size()) {
                        continue;
                    }
                    if (!mark[n1][m1] && dfs(board, mark, n1, m1, word, p + 1)) {
                        return true;
                    }
                }
                mark[n][m] = false;
            }
            return false;
        }
    };
    

    相关文章

      网友评论

          本文标题:79. Word Search

          本文链接:https://www.haomeiwen.com/subject/vrpfxctx.html