汉诺塔11层的怎么解

作者&投稿:诗婕 (若有异议请与网页底部的电邮联系)
汉诺塔1到9最快分别是几次? 可以告诉我计算方法吗?~

1层:1次
2层:3次
3层:7次
4层:15次
5层:31次
6层:63次
7层:127次
8层:255次
9层:511次
计算公式:f(x)=2^x-1

扩展资料
计算公式推导过程如下:
假设有n个圆盘,移动次数为f(n),根据经验,f(1)=1,f(2)=3
以3层为例,进行推导。可把整个过程分成三步,其中三个圆盘分别用A、B、C、代替且A的半径<B的半径<C的半径
1、把A、B移到中间的柱子,需要f(2)步
2、把C移动到第三根柱子,需要1步
3、把A、B再移动到第三根柱子,需要f(2)步
所以f(3)=f(2)+1+f(2)=7
同理,当圆盘数量为4时,三个步骤分别需要f(3)步、1步、f(3)步,即f(4)=f(3)+1+f(3)=15
由此可得递推公式:f(x+1)=2*f(x)+1
进一步可以通项公式:f(x)=2^x-1
参考资料来源:百度百科-汉诺塔

#include
using namespace std;
void hanoi(int n,char a,char b,char c);
void printf(char starting,char ending);
int main()
{
int m,n;
char Aa='A',Bb='B',Cc='C';
cout<<"Enter a number:";
cin>>m;
hanoi(m,Aa,Bb,Cc);
cin>>n;
return 0;
}
void printf(char starting,char ending)
{
cout"<<ending<<endl;
}
void hanoi(int n,char a,char b,char c)
{
if(n<=1)
printf(a,c);
else
{
hanoi(n-1,a,c,b);
printf(a,c);
hanoi(n-1,b,a,c);
}
}
是不是要这个,这是用DEV C++写的

如果解开3、4、5层的了就会发现n层就相当于玩了两次n-1层的加上移动最下面一块一次,没必要玩十层以上的,太费时间了,移动次数成几何增长的,也即是每次翻倍还要多一次

count = 0 # 步骤
def hanoi(n, src, dst, mid): # A src起始,C dst终点,B mid过渡点
    global count # 全局变量
    if n == 1 :
        print("p{}:{}->{}".format(1,src,dst))
        count += 1
    else:
        hanoi(n-1, src, mid, dst) # 由A 搬到B 
        print("p{}:{}->{}".format(n,src,dst)) #剩余A的一个搬到C
        count += 1
        hanoi(n-1, mid, dst, src)# B依次搬到C
    # 通过hanoi(参数)实现简单的逻辑交换

hanoi(11,'A','C','B')

print(count)
共 2047步


.......我也想知道。。


魔力宝贝手游怎么换职业 更换职业方法详解-高手进阶-安族网
1、其实这个非常的简单2、玩家只需要在法兰城东北角(NPC德米特夫)旁边找到职业介绍所3、然后找到职业介绍所的导游比诺塔4、这样就可以变更职业啦更换地点“法兰城-职业介绍所”在这里勇者们可以随意更换自己喜欢的职业,具有超高的职业更换自由度,满足勇者们的各种职业需求!PS: 首先玩家们需要来到这个地方...

lady gaga怎么出名的啊
Lady Gaga,原名史蒂芬妮·乔安妮·安吉丽娜·杰尔马诺塔(Stefani Joanne Angelina Germanotta),1986年3月28日出生于美国纽约曼哈顿,美国女歌手、词曲作者、演员。

天台县13331715293: 如何推导汉诺塔的公式 -
黄泉清咳: 求汗诺塔N个盘子须几次移动时得到了下面的递推公式:a[1] = 1;a[n] = a[n-1] * 2 + 1;请教通项公式?a[1] = 1;a[n] = a[n-1] * 2 + 1;可得a[i]= 2^i-1;证明,采用数学归纳法:1、猜想a[i]= 2^i-12、当i=1时,显然成立.3、假设i=k时成立...

天台县13331715293: 汉诺塔的八珠解法 -
黄泉清咳: 汉诺塔(又称河内塔)问题是印度的一个古老的传说.开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬...

天台县13331715293: 求汉诺塔C递归算法详细解答 -
黄泉清咳: Hanoi塔问题, 算法分析如下,设A上有n个盘子.如果n=1,则将圆盘从A直接移动到C.如果n=2,则:(1)将A上的n-1(等于1)个圆盘移到B上;(2)再将A上的一个圆盘移到C上;(3)最后将B上的n-1(等于1)个圆盘移到C上.如果n=...

天台县13331715293: 解释下递归求汉诺塔问题 -
黄泉清咳: 递归法是一种很方便的算法,你不要太过于纠结过程 hannoi这个函数4个变量,分别是要处理的塔的层数n,和塔a,b,c; a表示原塔,b是目标塔,c是中间的塔; 当n=1时,只有一层,直接移动; 其余情况:先讲上面的(n-1)层塔移到c上,此处可看做原问题的子问题,即hanoi(n-1,a,c,b); 再将最底层移到b,即可.

天台县13331715293: 求汉诺塔问题的详解 ...
黄泉清咳: 呵呵.这是个很有趣的程序.汉诺塔有3个柱,最多3个盘.最底层那个总为1.第二层就是n-1.当n为1时,代表只有一个盘,直接移到3柱.当超过一个盘时,执行hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); 这个hanoi()里面的one,two,three是个形式参数,所以你只要老是看hanoi(n,a,b,c)就行了.至于形参换位置,就是abc换位置,于是上面的指令就是第二层盘子从1柱移到2柱,后面的就是3层的盘子移到3柱,函数重调用,,,最后显示,则是从那个if(n==1)哪里开始,因为这是函数冲调用 的规则,...这题的思维是反过来的,.

天台县13331715293: 如何理解汉诺塔模型? -
黄泉清咳: 汉诺谈问题是一个转换盘子问题 汉诺塔(又称河内塔)问题是印度的一个古老的传说.开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧...

天台县13331715293: 语言是C#,求解释汉诺塔问题的递归算法 -
黄泉清咳: 设汉诺塔盘子从上到下,依次为 d1, d2,d3,......dn, ( n>0) 记 上面前k个盘子整体为 S(k) (k>1) 递归的思路是,先假设前n-1个盘子为一个整体S(n-1),要把盘子从A移动C, 只需要借助桥梁B即可完成,具体移动方法是:(1) S(n-1):A=>B (2) dn:A...

天台县13331715293: c++中汉诺塔问题解释 -
黄泉清咳: 汉诺塔问题是一个递归的经典例子,基本上不用递归不知道如何编程实现.问题就是从桩子1移到桩子3,借助桩子2.移动N个盘子共移动多少次.此问题递归解法的解释就是:先从1移到2,借助3,移动N-1个盘子.此时1上还有一个盘子.即 hanoi(n - 1, one, three, two); 可以直接将一个盘子移到3 move(one, three); 然后将剩余的在2上的N-1个盘子移到3上,借助1 hanoi(n - 1, two, one, three);

天台县13331715293: 5层汉诺塔游戏31步怎么移到另一个柱子上? -
黄泉清咳: 5层汉诺来塔游戏弄好四层后,先把上面的四个借助第三根柱子移到第二根柱子上,再把剩下的一个移到第三根柱源子上,最后借助第一根柱子将第二根柱子上的移到第三根柱子上去.1. 汉诺塔,又称河内塔,是一款WP7平台上源于印度一个古老传说的益智类游戏. 2. 汉诺塔:传说上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘.上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘.

天台县13331715293: c++汉诺塔问题求解 -
黄泉清咳: 这是一个典型的递归算法,也是数学中经典的的问题. 其实算法非常简单,当盘子的个数为4时,移动的次数应等于2^4 – 1=15次.首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上,根据圆盘的数量确定柱子的...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网