汉诺塔该怎么玩,方法

快啊... 快啊 展开
 我来答
帐号已注销
2020-11-10 · TA获得超过1815个赞
知道小有建树答主
回答量:2721
采纳率:100%
帮助的人:90.9万
展开全部
汉诺塔算法介绍:

一位美国学者发现的特别简单的方法:只要轮流用两次如下方法就可以了。

把三根柱子按顺序排成“品”字型,把所有圆盘按从大到小的顺序放于柱子A上,根据圆盘数量来确定柱子排放的顺序:

n若为偶数的话,顺时针方向依次摆放为:ABC;而n若为奇数的话,就按顺时针方向依次摆放为:ACB。这样经过反复多次的测试,最后就可以按照规定完成汉诺塔的移动。

因此很简单的,结果就是按照移动规则向一个方向移动金片:

如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C。

扩展资料:

汉诺塔经典题目:

三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,且每次移动同一根柱子上都不可以出现大盘子在小盘子上方的情况。

至少需要几次移动的问题,我们设移动次数为H(n)。

把上面n-1个盘子移动到柱子C上,把最大的一块放在B上,把C上的所有盘子移动到B上,由此我们得出表达式:

H⑴ = 1

H(n) = 2*H(n-1)+1 (n>1)

很快我们就可以得到H(n)的一般式为:

H(n) = 2^n - 1 (n>0)

且这种方法的确是最少次数的,证明非常简单,可以尝试从2个盘子的移动开始证,可以试试。

进一步加深问题:

假如现在每种大小的盘子都有两个,并且是相邻的,设盘子个数为2n,问:⑴假如不考虑相同大小盘子的上下要几次移动,设移动次数为J(n);⑵只要保证到最后B上的相同大小盘子顺序与A上时相同,需要几次移动,设移动次数为K(n)。

⑴中的移动相当于是把前一个问题中的每个盘子多移动一次,也就是:

J(n) = 2*H(n) = 2*(2^n - 1) = 2^(n+1)-2

在分析⑵之前,我们来说明一个现象,假如A柱子上有两个大小相同的盘子,上面一个是黑色的,下面一个是白色的,我们把两个盘子移动到B上,需要两次。

盘子顺序将变成黑的在下,白的在上,然后再把B上的盘子移动到C上,需要两次,盘子顺序将与A上时相同,由此我们归纳出当相邻两个盘子都移动偶数次时,盘子顺序将不变,否则上下颠倒。

回到最开始的问题,n个盘子移动,上方的n-1个盘子总移动次数为2*H(n-1),所以上方n-1个盘子的移动次数必定为偶数次,最后一个盘子移动次数为1次。

讨论问题⑵:

综上可以得出,要把A上2n个盘子移动到B上,可以得出上方的2n-2个盘子必定移动偶数次,所以顺序不变,移动次数为:

J(n-1) = 2^n-2

然后再移动倒数第二个盘子,移动次数为2*J(n-1)+1 = 2^(n+1)-3,

最后移动最底下一个盘子,所以总的移动次数为:

K(n) = 2*(2*J(n-1)+1)+1 = 2*(2^(n+1)-3)+1 = 2^(n+2)-5
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-12
展开全部
把所有环移动到最后一个
上面的环只能比下面的小才能放

技巧:移动奇数个环第一个先移动到目标位置,偶数环到另一个   汉诺塔的C语言实现
  #include"stdio.h"
  void move(char x,char y)
  {
  printf("%c-->%c\n",x,y);
  }
  void hanoi(int n,char one ,char two,char three)
  {
  if(n==1) move(one,three);
  else
  {
  hanoi(n-1,one,three,two);
  move(one,three);
  hanoi(n-1,two,one,three);
  }
  }
  main()
  {
  int m;
  printf("input the number of disks:");
  scanf("%d",&m);
  printf("the step to moving %3d diskes:\n",m);
  hanoi(m,'A','B','C');
  }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风林网络手游平台
2022-07-16 · 百度认证:四川风林网络科技有限公司官方账号
风林网络手游平台
向TA提问
展开全部
汉诺塔算法介绍:
把三根柱子按顺序排成“品”字型,把所有圆盘按从大到小的顺序放于柱子A上,根据圆盘数量来确定柱子排放的顺序:n若为偶数的话,顺时针方向依次摆放为:ABC;而n若为奇数的话,就按顺时针方向依次摆放为:ACB。
这样经过反复多次的测试,最后就可以按照规定完成汉诺塔的移动。因此很简单的,结果就是按照移动规则向一个方向移动金片:如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C。
  • 官方电话
  • 在线客服
  • 官方服务
    • 官方网站
    • 福利app
    • 代理申请
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
裙子1218
2018-11-15
知道答主
回答量:1
采纳率:0%
帮助的人:813
展开全部
这个关键要知道一个规律一单双数。知道了这个规律你会节省步数,现在我可以弄到十四分钟走完十层,靠的就是手速和这个规律。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
以可心75
2019-12-21 · TA获得超过1475个赞
知道小有建树答主
回答量:1.6万
采纳率:40%
帮助的人:1247万
展开全部
遵循的原则是大的盘需要摆放在下面,小的摆在上面,一次只能拿一个,交替轮换着挪动圆盘。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式