您的位置:首页 > 其它

【leetcode】Word Search

2013-10-03 01:35 225 查看
class Solution {
public:
bool exist(vector<vector<char> > &board, string word) {
// Note: The Solution object is instantiated only once and is reused by each test case.
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;
}

bool dfs(vector<vector<char> > &board, string word,int i,int j)
{
int row=board.size();
int col=board[0].size();
if(i<0||i>=row||j<0||j>=col||board[i][j]!=word[0])
return false;
if(word.size()==1)
return true;

board[i][j]='#';//do
bool tmp=((dfs(board,word.substr(1,word.size()-1),i+1,j))//backtracking
||(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];//undo

return tmp;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: