递归解题 回溯 -- 火车进站问题

本文探讨了回溯算法作为一种解决问题的思维方式,并通过火车进站问题来阐述递归与回溯的应用。在解决火车进站序列问题时,作者描述了递归方程的构造,包括两种状态转移方式,并指出当车厢数量为零时,问题得到解决。此外,还提及了CSDN用户thefirstz的反馈。
摘要由CSDN通过智能技术生成

1 回溯 ,回溯是一种算法设计的思维方式。

在我现阶段的理解 :回溯是在进行解的状态搜索中,当某一分支无解的时候,回溯到一个前一个状态搜索另外一个分支,如果第一步的所有分支都无解,那么判定为无解。否则直到找到我们所要的答案。

在写递归的时候,常常遇到要回溯的情况,但是经常脑袋会卡壳, 主要是在状态回溯的时候,不知如何保存和恢复状态。

 

 

比如火车进站 序列问题:

 

 在station 中,进站和出站的顺序不同,可以导致B 中的序列也不同,然后要求我们输出所有的出站序列。

 

这个递归方程很好写 ,

foo(m,n) //表示 在A中车厢 和station 车厢的个数  

有两种转移方式 -->foo(m,n-1)            要么station 一个车厢出来
                             --> foo(m-1,n+1)       要么 A中一个车厢到station 中

当m ==0  和 n==0 的时候,结果就出来了。 

 

a 表示 初始站 b 是中间的那个中转站 c 是终点

感谢CSDN 用户 thefirstz 指出我的错误


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值