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 是终点
感谢优快云 用户 thefirstz 指出我的错误