/*----------------------------------------------------------------------* Project: Hanoi.cpp* Name: zwp* Date: 2013.4*----------------------------------------------------------------------*/#include <iostream>
#include <iomanip>/*
** 注意为了记下移动的次数使用了 应用传递
*/
void move(unsigned num, unsigned& movenumbers, char source, char destination, char spare);int main(void)
{/*** 三个柱子*/const char PEC1 = 'A';const char PEC2 = 'B';const char PEC3 = 'C';unsigned movenumbers = 0; // 初始化移动次数为0std::cout <<"Please input number of disks: "<<std::endl;unsigned disks;  // 盘子数目std::cin  >>disks;move(disks, movenumbers, PEC1, PEC2, PEC3);system("pause");return 0;
}void move(unsigned num, unsigned& movenumbers, char source, char destination, char spare)
{if(num == 1) // 只有一个盘子{movenumbers++;std::cout <<std::setw(3)<<movenumbers<<" Move the top disk from "<<source<<" to "<<destination<<std::endl;}else{move(num - 1, movenumbers, source,  spare, destination); // 先把num-1个盘子从'A' 移动到 'C'move(1, movenumbers, source, destination, spare);        // 再把剩下的1个盘子从'A'移动到 'B'move(num - 1, movenumbers, spare, destination, source);  // 之后把num-1个盘子从'C'移动到 'B'}
}

心动C++情牵汉洛塔相关推荐

  1. c语言程序代码应缩进几格,汉诺塔c语言程序代码

    汉诺塔c语言程序代码(通过vc++6.0验证)(附讲解) 让我们先看看代码吧 #include int hj(int a,int b, int c,int i) { int t; if(i==1) p ...

  2. 洛谷 P1242 新汉诺塔

    原题链接 题目描述 设有n个大小不等的中空圆盘,按从小到大的顺序从1到n编号.将这n个圆盘任意的迭套在三根立柱上,立柱的编号分别为A.B.C,这个状态称为初始状态. 现在要求找到一种步数最少的移动方案 ...

  3. 对汉诺塔递归算法的理解(图解,附完整代码实现)

    前情提要: 首先说一下汉诺塔游戏的规则:如下图所示,有三个柱子A,B,C,我们要做的是把A柱的所有圆盘,全部转移到C柱上,转移时遵循的规则如下: 1.每次只能移动一个圆盘 2.所有的大圆盘必须在小圆盘 ...

  4. 题目---汉诺塔及AI代码及八皇后

    2019春第十一周作业 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering ...

  5. 汉诺塔(三)_栈的应用

    问题 E: 汉诺塔(三) 时间限制: 3 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版] 题目描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北 ...

  6. 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)

    前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...

  7. Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有

    1 #include <stdio.h> 2 void hanoi(int s,char a,char b,char c) //a是出发盘,b是中途盘,c是结束盘 3 { 4 if(s== ...

  8. 技术图文:如何实现汉诺塔问题?

    背景 最近在辅导小孩们学习编程,在介绍函数递归时,最典型的就是汉诺塔问题了. 我在这里总结一下,以方便大家的学习. 汉诺塔问题源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在 ...

  9. 汉诺塔问题---小昝

    C语言 #include <stdio.h> void move(char A,char C){printf("%c ---> %c\n",A,C); }void ...

  10. 轻松理解汉诺塔问题(图解java描述)

    引言:(易于理解) 汉诺塔看似简单的几行代码,却蕴含着奇妙的算法.我从我个人学习的角度来说.我一开始理解了原理,但是编码不会编,这也就是所谓的眼高手低.多研究多在IDE(eclipse-java,VS ...

最新文章

  1. fastjson又被发现漏洞,这次危害可导致服务瘫痪!
  2. xUtils简介及其使用方法
  3. 【AWS】AWS云计算赋能数字化转型专题研讨会圆满落幕
  4. logging通过配置文件设置同时输出到终端与文件
  5. yield return关键字怎么使用?
  6. MongoDB 空指针引用拒绝服务漏洞
  7. 实用的无锁队列(一)
  8. 为什么说“不要教你的孩子学编程”?
  9. InstallShield安装过程介绍
  10. Coprime Sequence
  11. HTML弹窗上下一步,JS实现从网页顶部掉下弹出层效果的方法
  12. Oracle数据库多语言文字存储解决方案
  13. cents 7.0命令
  14. 面试现场:今日头条(一面已通过)
  15. C语言指针学习与使用
  16. 粗粒度和细粒度的区别
  17. XSL 和 XSLT的区别
  18. 时间序列数据、自协方差函数、自相关函数与平稳性
  19. 转码(BIN→ASCII/BIN→BCD)
  20. 安装maven的eclipse插件出现Cannot complete the install because one or more required items could not be found

热门文章

  1. 联想e470加装固态硬盘_联想e470能不能加固态硬盘?
  2. 亚马逊 MWS上传数据 API部分的相关内容 amazon api 文档
  3. 动态范围控制(DRC)简介
  4. 电脑中病毒了--Autorun 病毒
  5. python 集合的基本操作
  6. android调用qq打开指定qq号进行聊天
  7. Codeforces 407C--Curious Array
  8. Periodic Strings
  9. 浩辰3D软件新手攻略:数据管理功能详解
  10. 自动化运维---playbook(应用变量)