zoukankan      html  css  js  c++  java
  • 剑指65: 矩阵中的路径

    题目描述

    请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。


    class Solution {
    public:
        bool hasPath(char* matrix, int rows, int cols, char* str)
        {  
          if(str==NULL||rows<=0||cols<=0)
               return false;
          bool *isOk=new bool[rows*cols]();
          for(int i=0;i<rows;i++)
          {
               for(int j=0;j<cols;j++)
                    if(isHsaPath(matrix,rows,cols,str,isOk,i,j))
                       return true;
          }
          return false;
        }
     bool isHsaPath(char *matrix,int rows,int cols,char *str,bool *isOk,int curx,int cury)
     {
          if(*str=='')
               return true;
          if(cury==cols)
          {
               curx++;
               cury=0;
          }
          if(cury==-1)
          {
               curx--;
               cury=cols-1;
          }
          if(curx<0||curx>=rows)
               return false;
          if(isOk[curx*cols+cury]||*str!=matrix[curx*cols+cury])
               return false;
          isOk[curx*cols+cury]=true;
          bool sign=isHsaPath(matrix,rows,cols,str+1,isOk,curx-1,cury)
           ||isHsaPath(matrix,rows,cols,str+1,isOk,curx+1,cury)
           ||isHsaPath(matrix,rows,cols,str+1,isOk,curx,cury-1)
           ||isHsaPath(matrix,rows,cols,str+1,isOk,curx,cury+1);
          isOk[curx*cols+cury]=false;
          return sign;
     }
    };

  • 相关阅读:
    js去除空格
    Quartz定时任务学习(九)Quartz监听器
    Quartz定时任务学习(七)Cron 触发器
    数据挖掘之聚类算法K-Means总结
    SQL SERVER分区具体例子详解
    基于basys2驱动LCDQC12864B的verilog设计图片显示
    图像处理的多线程计算
    三维空间中的几种坐标系
    2017年要学习的三个CSS新特性
    Mesos 资源分配
  • 原文地址:https://www.cnblogs.com/hrnn/p/13429603.html
Copyright © 2011-2022 走看看