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) 收藏 举报
浙公网安备 33010602011771号