首页 > 其他 > 详细

汉诺塔问题

时间:2018-04-15 15:23:39      阅读:192      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

算法如下:

 1 #include "stdafx.h"
 2 #include<iostream>
 3 using namespace std;
 4 int m = 0;
 5 void move( int n, char A, char C)          //把第n个盘子从A柱移到C柱  
 6 {
 7     cout << ++m << "," << n << "," << A << "," << C << endl;   //m为第几次执行移动操作
 8 }
 9 
10 void Hanoi(int n, char A, char B, char C)  //第n个盘子借助B柱从A柱移到C柱
11 {
12     if (n == 1)
13         move(1 , A , C);
14     else
15     {
16         Hanoi(n-1,A,C,B);                  //把第1——(n-1)个盘子看成一个整体,(n-1)个盘子借助C柱从A柱移到B柱
17         move( n ,A, C);                    //第n个盘子从A柱移到C柱
18         Hanoi(n - 1, B, A, C);             //把第n个(也就是最后的最大的那个盘子)从B柱借助A柱移到C柱
19     }
20 }
21 
22 int main()
23 {
24     int p;
25     cin >> p;
26     Hanoi(p, A, B, C);
27     return 0;
28 }

 

一组温馨的样例:

技术分享图片

 

汉诺塔问题

原文:https://www.cnblogs.com/Trojan00/p/8847615.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!