题目描述

  请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如[a b c e s f c s a d e e]是3*4矩阵,其包含字符串"bcced"的路径,但是矩阵中不包含“abcb”路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。

【思路】dfs尝试从每个结点开始走,走过一个结点就将其值置为'\0',走完之后记录是否成功,并将值恢复。

 class Solution {
public:
bool dfs(char* matrix, int rows, int cols, char* str, int i, int j){
if(str == NULL || *str == '\0'){
return true;
}
bool ans = false;
if((i>= ) && (i < rows) && (j >= ) && (j < cols) && (matrix[i * cols + j] == *str)){
matrix[i * cols + j] = '\0';
ans = dfs(matrix, rows, cols, str + , i - , j)
||dfs(matrix, rows, cols, str + , i + , j)
||dfs(matrix, rows, cols, str + , i, j - )
||dfs(matrix, rows, cols, str + , i, j + );
matrix[i * cols + j] = *str;
}
return ans;
}
bool hasPath(char* matrix, int rows, int cols, char* str)
{
for(int i = ;i < rows;i ++){
for(int j = ;j < cols;j ++){
if(dfs(matrix, rows, cols, str, i, j)){
return true;
}
}
}
return false;
}
};

最新文章

  1. jQuery.lazyload
  2. JQuery导航选择特效
  3. [Noi2016十连测第三场]线段树
  4. Python操作文件、文件夹、字符串
  5. 编程工具系列之一------使用GDB的堆栈跟踪功能
  6. vim编辑器配置
  7. .net core 11
  8. Jquery.Linq用法
  9. 设计模式:HelloWorld之策略模式
  10. Java实现递增数组的二分查找
  11. lay-verify 无效
  12. Hackergame 2018的一道题目confused_flxg失败心得体会
  13. redis_哈希对象
  14. CAN总线要点
  15. Spark生态以及原理
  16. centos7下安装docker(13.3volume生命周期管理)
  17. AD中的library中有些文件的后缀有.intlib .schlib .pcblib 这些都是库文件,但有什么区别呢?
  18. 最佳加法表达式(dp)
  19. mac os 卸载android studio 从新安装遇到的一些问题
  20. matlab练习程序(异或分类)

热门文章

  1. 检测微信小程序是否被反编译获取源码
  2. python matplotlibmat 包mplot3d工具 三维视图透视取消
  3. 2017Facebook面试题改编“一面砖墙 ”
  4. 洛谷P4136 谁能赢呢?
  5. 06003_redis在Linux上的安装
  6. (转)EDM邮件制作规范完整版
  7. SpringBoot学习:整合shiro(rememberMe记住我后自动登录session失效解决办法)
  8. 文件同步 单向rsync 双向unison 监控inotifywait 免密登录
  9. 解决replace格式替换后光标定位问题
  10. 【springboot-01】整合quartz