word search

 1 class Solution {
 2 public:
 3     bool travel(vector<vector<char> > &board,int r,int c,
 4     vector<vector<bool> > &flag, string word,int pos)
 5     {
 6         if( pos == word.length() ) return true;
 7         if( r<0 || r >=board.size() || c<0 || c>=board[0].size())
 8             return false;       
 9         if(!flag[r][c] ||  word[pos] != board[r][c] ) return false;
10         
11         flag[r][c] = false;
12         
13          if( travel(board,r-1,c,flag,word,pos+1)  ||            
14              travel(board,r+1,c,flag,word,pos+1)  ||            
15              travel(board,r,c-1,flag,word,pos+1)  ||
16              travel(board,r,c+1,flag,word,pos+1) )
17                     return true;
18         flag[r][c] = true;
19         return false;
20         
21     }
22     bool exist(vector<vector<char> > &board, string word) {
23         // Start typing your C/C++ solution below
24         // DO NOT write int main() function
25         if( word=="" ) return true;
26         if( board.empty() || board[0].empty() ) return false;
27         
28         vector<vector<bool> > flag(board.size(),vector<bool>(board[0].size(),true));
29         
30         for(int i=0;i<board.size();i++)
31         {
32             for(int j=0;j<board[i].size();j++)
33             {
34                 if(flag[i][j]&&board[i][j]==word[0])
35                 {
36                     flag[i][j] = false;
37                     if( travel(board,i-1,j,flag,word,1) )
38                         return true;
39                     if( travel(board,i+1,j,flag,word,1) )
40                         return true;
41                     if( travel(board,i,j-1,flag,word,1) )
42                         return true;
43                     if( travel(board,i,j+1,flag,word,1) )
44                         return true;
45                     flag[i][j] = true;
46                 }
47             }
48         }
49         return false;
50         
51     }
52 };

 

posted on 2013-09-03 17:05  jumping_grass  阅读(108)  评论(0)    收藏  举报

导航