汉诺塔问题
有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。
问:如何移?最少要移动多少次?
思路: 递归解, 三根杆分别用src(左),mid(中),dest(右)代替。
- 先将n-1个盘子借助中介杆从src移动到mid
- 再将一个盘子借助中介杆从src移动到dest
- 最后将n-1个盘子借助中介杆从mid移动到dest
![汉诺塔手工解法](https://img-blog.csdnimg.cn/20200226172651384.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTQxNzQyOA==,size_16,color_FFFFFF,t_70)
#include<bits/stdc++.h>
using