思路:回溯法
bool hasPath(char* matrix, int rows, int cols, char* str){if(str==NULL||rows<=0||cols<=0)return false;vector<vector<bool>> visited(rows, vector<bool>(cols, false));for(int i=0;i<rows;i++){for(int j=0;j<cols;j++)if(backtrack(matrix,rows,cols,str,visited,i,j))return true;}return false;}bool backtrack(char *matrix,int rows,int cols,char *str, vector<vector<bool>> &visited,int curx,int cury){if(*str=='\0')return true;if(curx<0||curx>=rows||cury<0||cury>=cols)return false;if(visited[curx][cury] ||*str!=matrix[curx*cols+cury])return false;visited[curx][cury]=true;bool sign=backtrack(matrix,rows,cols,str+1,visited,curx-1,cury)||backtrack(matrix,rows,cols,str+1,visited,curx+1,cury)||backtrack(matrix,rows,cols,str+1,visited,curx,cury-1)||backtrack(matrix,rows,cols,str+1,visited,curx,cury+1);visited[curx][cury]=false;return sign;}
指针作为函数参数传递时,要修改里面的值。应该设置为**
https://blog.csdn.net/wang386476890/article/details/82907259
