心动C++情牵汉洛塔
/*----------------------------------------------------------------------* 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++情牵汉洛塔相关推荐
- c语言程序代码应缩进几格,汉诺塔c语言程序代码
汉诺塔c语言程序代码(通过vc++6.0验证)(附讲解) 让我们先看看代码吧 #include int hj(int a,int b, int c,int i) { int t; if(i==1) p ...
- 洛谷 P1242 新汉诺塔
原题链接 题目描述 设有n个大小不等的中空圆盘,按从小到大的顺序从1到n编号.将这n个圆盘任意的迭套在三根立柱上,立柱的编号分别为A.B.C,这个状态称为初始状态. 现在要求找到一种步数最少的移动方案 ...
- 对汉诺塔递归算法的理解(图解,附完整代码实现)
前情提要: 首先说一下汉诺塔游戏的规则:如下图所示,有三个柱子A,B,C,我们要做的是把A柱的所有圆盘,全部转移到C柱上,转移时遵循的规则如下: 1.每次只能移动一个圆盘 2.所有的大圆盘必须在小圆盘 ...
- 题目---汉诺塔及AI代码及八皇后
2019春第十一周作业 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering ...
- 汉诺塔(三)_栈的应用
问题 E: 汉诺塔(三) 时间限制: 3 Sec 内存限制: 128 MB 提交: 2 解决: 2 [提交][状态][讨论版] 题目描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北 ...
- 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)
前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...
- 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== ...
- 技术图文:如何实现汉诺塔问题?
背景 最近在辅导小孩们学习编程,在介绍函数递归时,最典型的就是汉诺塔问题了. 我在这里总结一下,以方便大家的学习. 汉诺塔问题源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在 ...
- 汉诺塔问题---小昝
C语言 #include <stdio.h> void move(char A,char C){printf("%c ---> %c\n",A,C); }void ...
- 轻松理解汉诺塔问题(图解java描述)
引言:(易于理解) 汉诺塔看似简单的几行代码,却蕴含着奇妙的算法.我从我个人学习的角度来说.我一开始理解了原理,但是编码不会编,这也就是所谓的眼高手低.多研究多在IDE(eclipse-java,VS ...
最新文章
- fastjson又被发现漏洞,这次危害可导致服务瘫痪!
- xUtils简介及其使用方法
- 【AWS】AWS云计算赋能数字化转型专题研讨会圆满落幕
- logging通过配置文件设置同时输出到终端与文件
- yield return关键字怎么使用?
- MongoDB 空指针引用拒绝服务漏洞
- 实用的无锁队列(一)
- 为什么说“不要教你的孩子学编程”?
- InstallShield安装过程介绍
- Coprime Sequence
- HTML弹窗上下一步,JS实现从网页顶部掉下弹出层效果的方法
- Oracle数据库多语言文字存储解决方案
- cents 7.0命令
- 面试现场:今日头条(一面已通过)
- C语言指针学习与使用
- 粗粒度和细粒度的区别
- XSL 和 XSLT的区别
- 时间序列数据、自协方差函数、自相关函数与平稳性
- 转码(BIN→ASCII/BIN→BCD)
- 安装maven的eclipse插件出现Cannot complete the install because one or more required items could not be found