[剑指Offer] 65.矩阵中的路径
2024-10-21 11:56:53
题目描述
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如[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;
}
};
最新文章
- jQuery.lazyload
- JQuery导航选择特效
- [Noi2016十连测第三场]线段树
- Python操作文件、文件夹、字符串
- 编程工具系列之一------使用GDB的堆栈跟踪功能
- vim编辑器配置
- .net core 11
- Jquery.Linq用法
- 设计模式:HelloWorld之策略模式
- Java实现递增数组的二分查找
- lay-verify 无效
- Hackergame 2018的一道题目confused_flxg失败心得体会
- redis_哈希对象
- CAN总线要点
- Spark生态以及原理
- centos7下安装docker(13.3volume生命周期管理)
- AD中的library中有些文件的后缀有.intlib .schlib .pcblib 这些都是库文件,但有什么区别呢?
- 最佳加法表达式(dp)
- mac os 卸载android studio 从新安装遇到的一些问题
- matlab练习程序(异或分类)
热门文章
- 检测微信小程序是否被反编译获取源码
- python matplotlibmat 包mplot3d工具 三维视图透视取消
- 2017Facebook面试题改编“一面砖墙 ”
- 洛谷P4136 谁能赢呢?
- 06003_redis在Linux上的安装
- (转)EDM邮件制作规范完整版
- SpringBoot学习:整合shiro(rememberMe记住我后自动登录session失效解决办法)
- 文件同步 单向rsync 双向unison 监控inotifywait 免密登录
- 解决replace格式替换后光标定位问题
- 【springboot-01】整合quartz