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 用户

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

被折叠的 条评论
为什么被折叠?



