dfs::矩阵路径
方法
dfs
开始以为是dijkstra没想到是dfs
学习
冲这个题中看出,dfs用的是标记,不一定是visited[],能标记,递归就行
代码
bool hasPath(vector<vector<char>>& matrix, string &str) {
for(int i = 0;i<matrix.size();i++){
for(int j = 0;j<matrix[0].size();j++){
if(dfs(matrix,str,0,i,j))
return true;
}
}
return false;
}
bool dfs(vector<vector<char>>& matrix, string &str,int u,int x,int y){
if(matrix[x][y]!=str[u])return false;
if(u==str.size()-1)return true;
int dx[] = {-1,0,1,0};
int dy[] = {0,1,0,-1};
int t = matrix[x][y];
matrix[x][y] = '*';
for(int i = 0;i<4;i++){
int a = x+dx[i];
int b = y+dy[i];
if(a>=0&&a<matrix.size()&&b>=0&&b<matrix[0].size()){
if(dfs(matrix,str,u+1,a,b)) return true;
}
}
matrix[x][y] = t;
return false;
}
用心做~