今天是: 设为首页 | 加入收藏 | 网站地图
您现在所在的位置:国际机票查询 > 广州 > 河内 >
最新优惠机票
最新资讯More>>
航班常识More>>
河内塔
【字号:
河内塔(又称汉诺塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。解答结果请自己运行计算,程序见尾部。面对庞大的数字(移动圆片的次数)18446744073709551615,看来,众僧们耗尽毕生精力也不可能完成金片的移动。
  后来,这个传说就演变为汉诺塔游戏:
  1.有三根杆子A,B,C。A杆上有若干碟子
  2.每次移动一块碟子,小的只能叠在大的上面
  3.把所有碟子从A杆全部移到C杆上
  问题解决步骤:2的n次方-1,n为河内塔的阶数
  C语言精简算法
  /* Copyrighter by SS7E */
  #include<stdio.h> /* Copyrighter by SS7E */
  void hanoi(int n,char A,char B,char C) /* Copyrighter by SS7E */
  {
  if(n==1)
  {
  printf("Move disk %d from %c to %c
",n,A,C);
  }
  else
  {
  hanoi(n-1,A,C,B); /* Copyrighter by SS7E */
  printf("Move disk %d from %c to %c
",n,A,C);
  hanoi(n-1,B,A,C); /* Copyrighter by SS7E */
  }
  }
  main() /* Copyrighter by SS7E */
  {
  int n;
  printf("请输入数字n以解决n阶汉诺塔问题:
");
  scanf("%d",&n);
  hanoi(n,'A','B','C');
  }/* Copyrighter by SS7E */