递归算法——汉诺塔问题
来源:互联网 发布:wp.js 编辑:程序博客网 时间:2024/06/06 10:31
题目
菱形塔(假设为A)上有64个金圆盘,尺寸依次减小。圆盘按照尺寸从大到小的顺序自底向上排列。除了A塔外,还有另外的B塔和C塔。现在利用C塔作为中间存放容器,将A塔上面的圆盘移动到B塔上。每次只能移动一个,且不允许将圆盘放置在尺寸比它更小的圆盘之上。
分析
此问题可以通过递归予以解释。假设A上的圆盘数为n,要将A上最大的圆盘置于B的底部,首先需要将n-1个圆盘置于C塔上,然后将最大的圆盘移动到B。剩下的任务即是将C塔上面的n-1个圆盘移动到B塔上。因为现在B塔底部的圆盘大于所有C塔上的圆盘,故可以忽略不计。于是形成一个递归问题。
设函数Hanoi(int n,char A,char B,char C)
其中n为初始A塔上的圆盘数。Hanoi函数的目的是将这n个圆盘从A移动到B。
程序
#include "iostream"using namespace std;void Hanoi(int n, char A, char B, char C){if (n > 0){Hanoi(n - 1, A, C, B);//先将n-1个圆盘从A移动到Ccout << "move top disk from tower " << A << " to top of tower " << B << endl;//将A底部最大的圆盘从A移动到BHanoi(n - 1, C, B, A);//最后将C上的n-1个圆盘移动到B}}
0 0
- 递归算法——汉诺塔问题
- 算法笔记——【递归】汉诺塔问题
- 递归算法——汉诺塔问题
- 汉诺塔问题递归算法
- 递归算法-汉诺塔问题
- 递归算法--汉诺塔问题
- 递归算法--汉诺塔问题
- 有关汉诺塔的算法问题——C++递归
- 递归算法——约瑟夫问题
- 递归算法—输入字母逆序输出&汉诺塔递归算法
- 汉诺塔问题的递归算法
- 汉诺塔问题递归算法分析:
- 汉诺塔问题递归算法分析
- 汉诺塔问题C++递归算法
- 汉诺塔问题(递归算法)
- 递归算法1-汉诺塔问题
- 汉诺塔问题递归算法分析
- 汉诺塔问题(递归算法)
- linux date
- 查看linux系统版本
- 递归算法详细分析-> C
- javadoc时候乱码-编码 GBK 的不可映射字符
- 简单工厂模式
- 递归算法——汉诺塔问题
- Java4Android之HttpClient入门使用代码集
- iOS 之检测耳机插入和拔出
- linux安装ssh Server
- jQuery 判断页面元素是否存在的代码
- ipv4_frag ---------- 解读 intel dpdk 实例 IPv4 Fragmentation Sample Application
- 【BZOJ】【P1529】【POI2005】【ska Piggy banks】【题解】【并查集】
- json对象可视化编辑工具jsonmate
- hadoop配置ssh