C++数据结构与STL--递归--汉诺塔
来源:互联网 发布:顺丰科技java笔试 编辑:程序博客网 时间:2024/06/06 12:59
Tips:因为要大盘子不能在小盘子上面,所以,init杆上最大的盘子肯定是首先要移动到des杆上的。
于是问题就转化为:
*先把init杆的n-1个盘子全部移动到tem杆,以des杆为临时辅助
*然后把init的最大盘子移动到des杆,
*接着把tem杆上的所有盘子移动到des杆,以init杆为临时辅助
当盘子的个数大于1时,就不停的重复以上三个步骤。
下图给出3个盘子时的递归过程:
实现代码:
//n代表盘子的数目,init代表盘子所在的初始化杆,
//des代表盘子移向的目的杆,tem代表交换时的临时辅助杆void hanoi(int n,string init,string tem,string des)
{
if(n==1)//停止条件:移动一个盘子
{
cout<<init<<"==>"<<des<<endl;
return;
}
hanoi(n-1,init,des,tem);// 把n-1个盘子从init移动tem,以des为临时辅助
cout<<init<<"==>"<<des<<endl;//移动最大的盘子
hanoi(n-1,tem,init,des);//把n-1个盘子从tem移动到des,以init为辅助
}
int main()
{
hanoi(3,"A","B","C");
return 0;
}
运行结果
- C++数据结构与STL--递归--汉诺塔
- 【数据结构与算法】(五) c 语言递归与汉诺塔实现
- 数据结构与C++stl(2) 仿函数
- C++数据结构与STL--递归--进制转换
- (c#)数据结构与算法分析 --递归
- C语言数据结构----栈与递归
- 【数据结构与算法】递归汉诺塔
- 【数据结构与算法】汉诺塔递归
- C语言数据结构实现二叉树递归与非递归遍历(数据结构第四次实验)
- 数据结构与算法分析c++:STL中的向量和表
- (Copy)数据结构与STL
- 数据结构与stl
- 数据结构与STL
- 【数据结构与算法】汉诺塔算法——C语言递归实现
- 【数据结构与算法】汉诺塔算法——C语言递归实现
- 数据结构与算法(C语言版)__递归
- 递归 汉诺塔问题 Java数据结构与算法
- 【数据结构与算法】递归
- Linux C编程(2) 使用GDB调试入门
- thinkphp 类库
- __attribute__用法
- Torque安装说明
- time convert
- C++数据结构与STL--递归--汉诺塔
- SQL语句大全
- qt5.0 下面转移程序
- hdu4277 USACO ORZ
- 在c#项目中调用及调试c++写的dll
- 求质数算法的N种境界
- 代码简洁之道--特殊情况一般化
- leetcode insert interval
- 浅谈实时数据库系统原理及其应用