汉诺塔问题

假设有A、B、C三个轴,有n个直径各不相同、从小到大依次编号为1,2,3……,n的圆盘按照上小下大的顺序叠放在A上。现要求将这n个圆盘移至C轴上并仍按相同顺序叠放,但圆盘叠放时必须遵循下列规则:1.每次只能移动一个圆盘,它必须位于某个轴的顶部;2.圆盘可以插在A、B、C中的任意一个轴上;3.任何时刻都不能将较小的圆盘放置在较大的圆盘上。

代码:

#include<stdio.h>

move(char A,char B)
{
  printf("%c-->%c\n",A,B);
}

hanio(int n,char A,char B,char C)
{
  if(n==1)  
    move(A,C);
  else
  {
    hanio(n-1,A,C,B);
    move(A,C);
    hanio(n-1,B,A,C);
  }
}

int main()
{
  int n;
  scanf("%d",&n);
  hanio(n,'A','B','C');
  return 0;
}

posted on 2015-01-10 14:28  JASONlee3  阅读(147)  评论(0编辑  收藏  举报

导航