思路:回溯法

    1. bool hasPath(char* matrix, int rows, int cols, char* str)
    2. {
    3. if(str==NULL||rows<=0||cols<=0)
    4. return false;
    5. vector<vector<bool>> visited(rows, vector<bool>(cols, false));
    6. for(int i=0;i<rows;i++)
    7. {
    8. for(int j=0;j<cols;j++)
    9. if(backtrack(matrix,rows,cols,str,visited,i,j))
    10. return true;
    11. }
    12. return false;
    13. }
    14. bool backtrack(char *matrix,int rows,int cols,char *str, vector<vector<bool>> &visited,int curx,int cury)
    15. {
    16. if(*str=='\0')
    17. return true;
    18. if(curx<0||curx>=rows||cury<0||cury>=cols)
    19. return false;
    20. if(visited[curx][cury] ||*str!=matrix[curx*cols+cury])
    21. return false;
    22. visited[curx][cury]=true;
    23. bool sign=backtrack(matrix,rows,cols,str+1,visited,curx-1,cury)
    24. ||backtrack(matrix,rows,cols,str+1,visited,curx+1,cury)
    25. ||backtrack(matrix,rows,cols,str+1,visited,curx,cury-1)
    26. ||backtrack(matrix,rows,cols,str+1,visited,curx,cury+1);
    27. visited[curx][cury]=false;
    28. return sign;
    29. }

    指针作为函数参数传递时,要修改里面的值。应该设置为**
    https://blog.csdn.net/wang386476890/article/details/82907259