汉诺塔

1143 汉诺塔

题目描述

汉诺塔问题是这样的:有3根柱子A,B,C,其中A柱上有64个盘子,盘子大小不等,大的在下,小的在上。要求把这64个盘子从A柱移到C柱上,在移动过程中可以借助B柱,每次只允许移动一个盘子,且在移动过程中在三根柱子上都保持大盘在下,小盘在上。从键盘输入一个整数n(n<=64)表示盘子的个数,打印出移动盘子的正确步骤。

输入描述

/*
从键盘输入盘子的个数n。
*/
3

输出描述

/*
打印出n个盘子的移动步骤。每一步骤占据一行。
*/
a->c
a->b
c->b
a->c
b->a
b->c
a->c
#include<stdio.h>
void hanoi(int n,char a,char b ,char c){
    if(n==1)
        printf("%c->%c
",a,c);
    else{
       hanoi(n-1,a,c,b);
       printf("%c->%c
",a,c);
       hanoi(n-1,b,a,c);
    }
}
int main()
{
   int n;
   char a='a',b='b',c='c';
   scanf("%d",&n);
   hanoi(n,a,b,c);
}

原文地址:https://www.cnblogs.com/lwp-nicol/p/14279320.html