【回溯法】 与力扣79题同理
class Solution {
public:
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int n,m;
int len;
bool f[10100];
bool dfs(char* matrix, int x, int y, char* str, int l)
{
if(x<0||x>n-1||y<0||y>m-1||f[x*m+y]||matrix[x*m+y]!=str[l]) return false;
if(l==len-1) return true;
f[x*m+y]=true;
for(int i=0;i<4;i++)
{
int dx=x+dir[i][0];
int dy=y+dir[i][1];
if(dfs(matrix,dx,dy,str,l+1)) return true;
}
f[x*m+y]=false;
return false;
}
bool hasPath(char* matrix, int rows, int cols, char* str)
{
n=rows;
m=cols;
len=strlen(str);
memset(f,false,sizeof(f));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(dfs(matrix,i,j,str,0)) return true;
}
}
return false;
}
};
京公网安备 11010502036488号