纠结了好久才弄得明白一点点的汉诺塔问题,现在把一些方程与大家分享一下!
来源:互联网 发布:mac mini 装win10 编辑:程序博客网 时间:2024/05/15 21:58
这个程序是目的是:将A柱上的金盘移到B柱上
//从A到B
#include < iostream >
using namespace std;
void move(int inum, char from, char to);
void hanoi(int inum, char a, char b, char c);
void main()
{
int inum;
cout << "Please input the number of Gold Disk :" << endl;
cin >> inum;
cout << "当金盘数为"<< inum
<< "时将A上的金盘移动到B上的步骤为:"
<< endl;
hanoi(inum, 'A', 'B', 'C'); // 借助C,将A上的金盘移动到B上
}
void move(int inum, char from, char to)
{
cout << inum <<" :" << from << "移动到" << to << endl;
}
void hanoi(int inum, char a, char b, char c)
{
if (inum == 1) //每一次递归的终止条件
move(inum, a, b); //将第inum个金盘直接移动到B上
else
{
hanoi(inum-1, a, c, b); //将inum-1个金盘借助于B,从A移动到C上
move(inum, a, b); //将第inum个个金盘直接从A移动到B上
hanoi(inum-1, c, b, a); //将第inum-1个金盘借助于A,从C移到B上,就可以完成了目的
} //即从A上的金盘全部移到B上
}
以下只分析inum = 3的情况:
当inum = 3 时:程序其实是:
hanoi(3, A,B,C)
{
if(为1)
move(1, A,B); //将第inum个金盘直接移动到B上
else
{
@1: hanoi(2,A,C,B); //将inum-1个金盘借助于B,从A移动到C上
@2: move(2,A,B); //将第inum个个金盘直接从A移动到B上
@3: hanoi(2,C,B,A); //将第inum-1个金盘借助于A,从C移到B上,就可以完成了目的
}
}
===>>>
@1: 先执行这个
hanoi(2, A,C,B)
{
if(为1)
move(1, A,C);
else
{
hanoi(1,A,B,C);
move(2,A,C);
hanoi(2,B,C,A);
}
}
hanoi(1, A,B,C)
{
if(为1)
move(1, A,B); // 1:A移到B
else
{
//这部分不用看了,,在此不修改了!
}
}
===================================================================
@2:再执行这个:
move(2,A,C); //2:输出A到C
@3:再执行这个:
hanoi(2,B,C,A); //这里就不一一列出来了,输出结果应该是: 1:B移到C 3:A移动到B
最后就执行move:
2:C移动到B 1:A移到B
大家有什么补充请补充一下,谢谢,互相学习学习!
- 纠结了好久才弄得明白一点点的汉诺塔问题,现在把一些方程与大家分享一下!
- 编译pixhawk遇到的问题,纠结好久才明白
- poj Gone Fishing 枚举加贪心 当初做的很纠结啊!!终于A了,与大家分享一下经验
- 近期做了个项目,做到关于hibernate分页的,纠结了好久。现在拿出来分享下。
- 好久没更新博客了,今天给大家分享一下Android中的资源与国际化的问题,通常我们新建一个Android工程,目录结构如下图所示: 我们主要看一下layout与values目录,layou
- 前几天弄通了Java的接口问题,现在来和大家分享一下,不对的还望指正!
- 数组排序数字大小,与筛选最大值最小值。冒泡比较法。。研究了好久才写出来与大家分享
- 纠结了好久的递归
- 好久没有更新了。汇报一下现在的工作
- 好久没来了,测试一下现在的博客
- 纠结了好久的Android SDK无法更新问题
- 今天的一个面试题。回来想了好久才明白。
- 整理了一些高质量的教程与大家分享
- 随笔,玩了一段日子的ssh,现在把代码和心得一起放上去。大家一起交流一下。
- 到现在才明白
- 现在才明白
- 现在才明白
- 一键横屏--------纠结了好久
- const修饰符详解
- Android suspend/resume flow (上篇: User mode)
- flash如何导入avi 格式
- 继承
- 每天学习一算法系列(13) (输入一个单向链表,输出该链表中倒数第k个结点)
- 纠结了好久才弄得明白一点点的汉诺塔问题,现在把一些方程与大家分享一下!
- YUM常用命令介绍
- EJB与JavaBean之区别
- 影像店管理建库脚本 cdshop.sql
- Android Dev Guide -> User Interface
- 请记住这一天2011/5/8
- 用UIAlertView绘制弹出对话框
- 【转】LaTeX制作pdf文件书签乱码问题
- 什么是分布式应用开发