[leetcode]word search

2014-11-23 22:25:52 · 作者: · 浏览: 4
class Solution {
public:
    bool dfs(vector > &board, string word, int i, int j){
        int M = board.size();
        int N = board[0].size();
        
        if(i < 0 || j < 0 || i >= M || j >= N || board[i][j]!=word[0]) return false;
        
        if(word.size() == 1) return true;
        
        board[i][j] = '#';
        
        bool tmp = dfs(board, word.substr(1,word.size()-1), i-1, j) ||
                dfs(board, word.substr(1,word.size()-1), i+1, j) ||
                dfs(board, word.substr(1,word.size()-1), i, j-1) ||
                dfs(board, word.substr(1,word.size()-1), i, j+1);
        
        board[i][j] = word[0];
        return tmp;
    }


    bool exist(vector
> &board, string word) { // Start typing your C/C++ solution below // DO NOT write int main() function if(board.empty()) return false; for(int i = 0; i < board.size(); i++){ for(int j = 0; j < board[0].size(); j++){ if(dfs(board, word, i, j)) return true; } } return false; } };