首页 > 其他 > 详细

Word Search

时间:2017-06-10 19:07:59      阅读:273      评论:0      收藏:0      [点我收藏+]

方法:使用递归的方式实现:

class Solution {
public:
    bool exist(vector<vector<char>>& board, string word) {
        int m = board.size(), n = board[0].size();
        vector<vector<bool>> visited =  vector<vector<bool>>(m, vector<bool>(n, false));
        
        for(int i=0; i<m; ++i)
        {
            for(int j=0; j<n; ++j)
            {
                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)
    {
        if(index == word.size())
            return true;
            
        if(i < 0 || j < 0 || i >= board.size() || j >= board[0].size())
            return false;
        
        if(word[index] != board[i][j])
            return false;
        if(visited[i][j])
            return false;
        
        visited[i][j] = true;
        bool ret = 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);
        visited[i][j] = false;
        return ret;
    }
};

 

Word Search

原文:http://www.cnblogs.com/chengyuz/p/6979459.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!