leetcode-79. 单词搜索(剑指offer矩阵中的路径)

 

 

下面的dfs在剑指offer上没毛病,在leetcode上超时

class Solution {
public:
    bool exist(vector<vector<char>>& board, string word) {
        int m = board.size();
        int n = board[0].size();
        for(int i = 0; i < m; i++)
            for(int j = 0; j < n; j++){
                if(board[i][j]==word[0]){
                    vector<vector<bool>> visited(m, vector<bool>(n,false));
                    if(dfs(board,visited,word,i,j,0))
                        return true;
                }
            }
        return false;

    }

    bool dfs(vector<vector<char>> board, vector<vector<bool>> visited,string word,int i, int j,int index){
        int m = board.size();
        int n = board[0].size();
        if(i<0||i>=m||j<0||j>=n||visited[i][j]||board[i][j]!=word[index])
            return false;
        visited[i][j] = true;
        if(index==word.size()-1)
            return true;
        if(dfs(board,visited,word,i-1,j,index+1)||dfs(board,visited,word,i+1,j,index+1)||dfs(board,visited,word,i,j-1,index+1)||dfs(board,visited,word,i,j+1,index+1))
            return true;
        visited[i][j] = false;  // 复原
        return false;
    }
};

 

posted @ 2021-07-17 17:02  三一一一317  阅读(27)  评论(0)    收藏  举报