如果柱子标为A,B,C,要由A搬至C,在只有一个盘子时,就将它直接搬至C;当有两个盘子,就将B作为辅助柱;如果盘数超过2个,将第二个以下的盘子遮起来,就很简单了,每次处理两个盘子,也就是:A->B、A->C、B->C这三个步骤,而被遮起来的部分,其实就由方程的递归处理。
代码如下:
#include
void hanoi(int n,char A,char B,char C){...
分类:
其他好文 时间:
2015-08-14 19:08:22
阅读次数:
199
递归:在一个方法的内部,对自身进行调用,又叫递归调用循环和递归都要具有三部分:初始值,终止条件,前进步长递归和迭代是等价的常见的问题:累加加和(累乘乘积),汉诺塔,斐波那契数列publicclassRecuresion_06{publicstaticvoidmain(String[]args){//...
分类:
其他好文 时间:
2015-08-12 01:14:45
阅读次数:
88
汉诺塔是数学上的一个谜题。有三根杆子,一些不同大小的中间有孔的圆盘,可以按大小顺序套在杆子上,最小的在最上面,堆成类似锥形的结构。问题是怎么把一根杆子上的一堆圆盘移动到另一根杆子上,限定条件如下: 一次只能移动一个圆盘。 每一次移动步骤包括将一根杆子最上面的圆盘移开放到另一根杆子上圆盘的最上层(不能...
分类:
其他好文 时间:
2015-08-08 18:05:20
阅读次数:
120
/**
* 功能:汉诺塔问题
* 描述:有3根柱子及N个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,
* 所有盘子自底向上从大到小依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。
* 移动圆盘时有以下限制:
* 1)每次只能移动一个盘子。
* 2)盘子只能从柱子顶端滑出移到下一根...
分类:
其他好文 时间:
2015-08-04 17:16:24
阅读次数:
122
汉诺塔(一)时间限制:1000ms | 内存限制:65535KB难度:3描述在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有...
分类:
其他好文 时间:
2015-08-04 13:09:42
阅读次数:
127
学习python的过程中无意看到这个问题,就当练练手吧。现在看起来这个问题用递归求解好简单。
输入参数是盘子的数目n,以及三根柱子。这里把这三根柱子称作源柱A,辅助柱B,目的柱C
那么汉诺塔的问题就是将n个盘子由源柱A移动到目的柱C中
算法分三步进行:
将源柱中的n-1个盘子由源柱移动到辅助柱中将源柱中最底端的盘子移动到目的柱中将辅助柱中的n-1个盘子移动到目的柱中
这就...
分类:
其他好文 时间:
2015-08-02 18:23:32
阅读次数:
143
递归求汉诺塔的解// 递归求汉诺塔的解.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include
#include
#includevoid HanoiTower(int,char,char,char);
void main()
{
int n;
char A='A',B='B',...
分类:
其他好文 时间:
2015-07-31 18:32:43
阅读次数:
129
??
题目大意:就是普通的汉诺塔问题,给出n,表示说有n个大小不同的碟子,然后再给出每个碟子的初始位置和目标位置,要求计算出最少的步数使得每个碟子都移动到它的目标位置。
思路:考虑编号最大的盘子,如果它在初始位置和目标局面在同一根柱子上,那么我们不需要移动它。
由于盘子的移动是可逆的,根据对称性,我们只需要求出初始局面和目标局面移动形成的参考局面的步数之和,然后加一即可。
我们可以写一个函...
分类:
其他好文 时间:
2015-07-28 18:40:59
阅读次数:
124
/*
*功能:假设有3个塔座x y z,在x上插有n个直径大小各不相同、从小到大编号为1 - n的圆盘,要求将x轴上的n个圆盘移动到z轴并按同样顺序排列,移动圆盘须遵循以下规则:
1)、每次只能移动一个圆盘;
2)、圆盘可插在x y z中的任一塔座上;
3)、任何时刻不能将一个较大的圆盘压在较小的圆盘上;
*文件:hanoi.cpp
*时间:2015年7月6日20:22:29
*作者:cut...
分类:
其他好文 时间:
2015-07-26 22:45:36
阅读次数:
164