【每日打卡】Day4:矩阵中的路径 C++实现

设计一个函数,使用深度优先搜索(DFS)判断矩阵中是否存在一条包含给定字符串所有字符且不重复经过同一格子的路径。题目为连通块问题的变形,通过回溯法进行解决。
摘要由CSDN通过智能技术生成

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。

路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。

如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。

注意:

  • 输入的路径不为空;
  • 所有出现的字符均为大写英文字母;

样例

matrix=
[
  ["A","B","C","E"],
  ["S","F","C","S"],
  ["A","D","E","E"]
]

str="BCCE" , return "true" 

str="ASAE" , return "false"

 思路:DFS,本题是连通块的变形,但不同于普通的连通块,其根本是求给定字符串是否可以用一条线走完,即连通块中没有三岔点,对此可采用回溯法,代码如下:

class Solution {
public:
    int dx[4] = {-1,0,1,0}, dy[4] = {0,1,0,-1};
    int xsize, ysize;
    bool dfs(int x, int y, int len, string str,vector<vector<char>>& matrix){
        if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值