您的位置:首页 > 其它

79. Word Search

2016-03-28 23:40 281 查看
//起点的选取
//继续进行的条件
//终止的条件
//ac 16ms
class Solution {
public:
bool search(vector<vector<char>>& board, string & word,int index,int x,int y,bool *flag)
{
if(index==word.size()) return true;
int m=board.size(),n=board[0].size();
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
for(int i=0;i<4;i++)
{
int x0=x+dir[i][0];
int y0=y+dir[i][1];
if(x0>=0&&y0>=0&&x0<m&&y0<n&&!flag[x0*n+y0]&&board[x0][y0]==word[index])
{
flag[x0*n+y0]=true;
if(search(board,word,index+1,x0,y0,flag)) return true;
flag[x0*n+y0]=false;
}
}
return false;
}
bool exist(vector<vector<char>>& board, string word) {
int m=board.size(),n=board[0].size();
bool *flag =new bool[m*n];
memset(flag, false,sizeof(bool)*m*n);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(board[i][j]==word[0])
{
flag[i*n+j]=true;
if(search(board,word,1,i,j,flag)) return true;
flag[i*n+j]=false;
}
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: