zoukankan      html  css  js  c++  java
  • 矩阵的路径

    1回溯法

    class Solution {
    public:
        bool hasPath(char* matrix, int rows, int cols, char* str)
        {
         if( matrix==NULL||str==NULL||rows<=0||cols<=0)
             return false;
         int row=0;
         int col=0;
         bool * visited=new bool[rows*cols];  //new 一个矩阵,返回一个指针;用以检测每个节点是否经过了的;
         memset(visited,0,rows*cols);
         int pathlength=0;//字符串所在的位置
         for(row=0;row<rows;row++)
           {
              for(col=0;col<cols;col++)
              {
                 if(hasPathCore(matrix,rows,cols,row,col,str,visited,pathlength))//如果路径搜索成功
                 {
                   return  true; 
                 }
              }
           }
           delete [] visited;
           return  false; 
        }
      public : 
          bool hasPathCore(char* matrix,int rows, int cols, int row, int col, char* str, bool * visited,int & pathlength)
         {
          bool haspath=false;
          //指针的话上面已经验证过非空指针了  
          if(str[pathlength]=='')//如果位置处是空字符  
          {
             return true; 
          }
          //有必要在每个函数里进行限制                                                 //没有被访问过
          if(row>=0&&row<rows&&col>=0&&col<cols&&matrix[col+row*cols]==str[pathlength]&&visited[col+row*cols]==false)
          {
             pathlength++; //先向前走
             visited[col+row*cols]=true;
            //围绕该点的上下左右找 看有无和path相对应的值
              haspath= (hasPathCore(matrix,rows,cols,row-1,col,str,visited,pathlength)||       
                       hasPathCore(matrix,rows,cols,row+1,col,str,visited,pathlength)||
                       hasPathCore(matrix,rows,cols,row,col-1,str,visited,pathlength)||
                       hasPathCore(matrix,rows,cols,row,col+1,str,visited,pathlength));
             if(!haspath)//如果该路径没找到的话  //那么我们回退
             {
              pathlength--;//回退一个
              visited[col+row*cols]=false; //当我没参观过此处
             }
    
          
          }
             return haspath;
      }
    
    
    };
  • 相关阅读:
    2021年2月22
    2021年2月21
    2021年2月20
    2021年2月19
    动态添加titie属性
    根据内容改变文字颜色!
    自定义弹出层!
    来回切换图标以及文字
    20180831xlVBA_WorksheetsCosolidate
    20180830xlVBA_合并计算
  • 原文地址:https://www.cnblogs.com/cgy1012/p/11373329.html
Copyright © 2011-2022 走看看