采用深度搜索算法
代码如下:
bool ex(char** board, int *boardColSize, int line, int i, int j,int w,int **mask,char *word){
if(i<0 || i>=line || j<0 || j>=boardColSize[i])
return false;
if(board[i][j] == word[w] && mask[i][j]==0){
mask[i][j]=1;
if(w==strlen(word)-1) return true;
if(ex(board,boardColSize,line,i+1,j,w+1,mask,word)==true)
return true;
if(ex(board,boardColSize,line,i-1,j,w+1,mask,word)==true)
return true;
if(ex(board,boardColSize,line,i,j+1,w+1,mask,word)==true)
return true;
if(ex(board,boardColSize,line,i,j-1,w+1,mask,word)==true)
return true;
mask[i][j]=0;
}
return false;
}
bool exist(char** board, int boardSize, int* boardColSize, char * word){
int w=0;
int **mask = (int **)malloc(sizeof(int *) * boardSize);
for(int i=0; i<boardSize; i++){
mask[i] = (int *)malloc(sizeof(int) * boardColSize[i]);
for(int j=0; j<boardColSize[i]; j++)
mask[i][j] = 0;
}
for(int i=0; i<boardSize; i++){
for(int j=0; j<boardColSize[i]; j++)
if(ex(board,boardColSize,boardSize,i,j,w,mask,word)==true)
return true;
}
return false;
}