浅谈回溯法---矩阵中的路径,机器人的运动范围

开篇送给读者两句话:

一个人可以走的快,但一群人才可以走的远。

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,思维和际遇有交集,亦有合集,走的多了,站的高了,自然就看的远了。

       犹记初春实习面头条的时候,记得第一道题就是矩阵中的路径问题,大概是这样:有一个2*2的矩阵,有起点A和终点B,矩阵中有很多障碍物,代码实现从A到B的最短路径,这道题和我今天要说的矩阵的搜索路径有很大的相似之处,有心的读者可以试着自己想想思路。

回溯法

        简单点,回溯法其实就是一种 枚举 + 优选 的过程,通过搜索尝试的过程中寻求问题的解,当发现当前不满足最优的时候,就退一步,重新找路。

基本思想:

        对隐式图的深度优先搜索算法。

        在包含问题的所有的解空间中,按照DFS搜索策略,从根节点(起始点)出发DFS搜索解空间树。当搜索到一个结点时,就先判断该结点是否包含问题的解:

        若包含:沿着该节点出发继续DFS

        若不包含:逐层向其祖先结点回溯

解题步骤:重要重要重要!

        1. 针对问题,确定问题的解空间(至少包含问题的一个最优解)

         2. 确定结点的扩展搜索规则

         3. 以DFS搜索解空间,并在搜索过程中使用剪枝函数避免无效搜索。

举例1:矩阵中的路径

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

    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值