请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。(连续)
深度搜索
int row,colum,length;
bool dfs(char **board,int i,int j,char *word,int l){
if(i<0||j<0||i>=row||j>=colum||board[i][j]!=word[l]){
return false;
}
if(l==length-1){
return true;
}
char t=board[i][j];
board[i][j]=0;
bool tem=(dfs(board,i+1,j,word,l+1)||dfs(board,i,j+1,word,l+1)||dfs(board,i-1,j,word,l+1)||dfs(board,i,j-1,word,l+1));
board[i][j]=t;
return tem;
}
#include<string.h>
bool exist(char** board, int boardSize, int* boardColSize, char* word){
length=strlen(word);
colum=*boardColSize;
row=boardSize;
for(int i=0;i<row;i++){
for(int j=0;j<colum;j++){
if(dfs(board,i,j,word,0)){
return true;
}
}
}
return false;
}
链接:https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof