1、游戏规则
有 A,B,C三个柱子,A柱子上有n个圆盘,将A上的圆盘转移到C上。 限制条件:每个柱子上的圆盘都需从大到小排放(即大的圆盘必须在下面)
思路:
1、将A柱子上的n-1个圆盘全部(通过C柱子)移动到B柱子上(不用思考具体怎么移动)。
2、将A中最后一块圆盘移动到C柱子上。
3、将B柱子上的n-1个圆盘(通过A柱子)移动到C柱子上
#include<stdio.h>
void move(int n,char a,char b,char c)
{
if(n == 0)return; //出口
move(n-1,a,c,b); //n-1个圆盘从a通过b移动到c
printf("%c -> %c\n",a,c);
move(n-1,b,a,c); //n-1个圆盘从b通过a移动到c
}
int main(int argc,const char* argv[])
{
int n;
printf("请输入汉诺塔的层数\n");
scanf("%d",&n);
if(n==1)
{
printf("a -> c\n");
}
move(n,'a','b','c');
}