c++实现汉诺塔
来源:互联网 发布:泰丰售电软件 编辑:程序博客网 时间:2024/06/07 06:01
问题描述:
有一个梵塔,塔内有三个座A、B、C,A座上有诺干个盘子,盘子大小不等,大的在 下,小的在上(如图)。
有一个梵塔,塔内有三个座A、B、C,A座上有诺干个盘子,盘子大小不等,大的在 下,小的在上(如图)。
把这些个盘子从A座移到C座,中间可以借用B座但每次只能允许移动一个盘子,并且 在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。
描述简化:把A柱上的n个盘子移动到C柱,其中可以借用B柱。
算法实现:
1.先将A上的n-1个盘子通过C移动到B
2.将A上的最后一个盘子直接移动到C
3.将B上的n-1的盘子通过A移动到C即可实现
C++代码如下:
#include <iostream>using namespace std;void Hannuota(int n, char A, char B, char C);int main(){ int num; char ch1 = 'A', ch2 = 'B', ch3 = 'C'; cout << "Enter the number of disk: "; cin >> num; Hannuota(num, ch1, ch2, ch3); return 0;}void Hannuota(int n, char A, char B, char C) //一共有n个盘子,通过A柱子借助B柱子移到C柱子{ if(n == 1) cout << "将编号为" << n << "的盘子直接从" << A << "移动到" << C << endl; else { Hannuota(n-1, A, C, B); cout << "将编号为" << n << "的盘子直接从" << A << "移动到" << C << endl; Hannuota(n-1, B, A, C); }}
运行结果:
0 0
- [C/C++]汉诺塔的实现
- 汉诺塔C语言实现
- 汉诺塔(c语言实现)
- c递归实现 汉诺塔
- C语言实现汉诺塔
- 汉诺塔实现c与java
- 汉诺塔的C语言实现
- 汉诺塔递归实现[C代码]
- 汉诺塔(hanoi) C语言实现
- C++_递归实现汉诺塔
- 汉诺塔问题(C实现)
- 汉诺塔解法C语言实现
- 汉诺塔实现程序(C++)
- C/C++: 实现加减乘除。
- C实现C(3)
- 用C语言实现汉诺塔的程序
- C语言实现的动画汉诺塔
- 汉诺塔递归的c语言实现(递归)
- 什么是数据库抽象层
- Android国际化语言缩写对应
- AppCan3.0亮相互联网创业者大会 获开发者高度认可
- jquery中prop()方法和attr()方法的区别浅析
- AjaxControlToolkit Multiple Files Upload
- c++实现汉诺塔
- 一个好用的短连接服务,mark备用
- sleep()和 wait()有什么区别
- leetcod Wildcard Matching
- getNextElement与nextSibling的疑惑
- 深入浅出Java设计模式之适配器模式
- 在Windows Server 2008中文件夹中的图片不能显示缩略图
- .net序列化及反序列化
- Java SSL例子