c++实现汉诺塔

来源:互联网 发布:泰丰售电软件 编辑:程序博客网 时间:2024/06/07 06:01
问题描述:
   有一个梵塔,塔内有三个座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