汉诺塔是一个源于印度古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,大梵天命令僧侣把圆盘移到另一根柱子上,并且规定:在小圆盘上不能放大圆盘,每次只能移动一个圆盘。当所有圆盘都移到另一根柱子上时,世界就会毁灭。
输入描述:
输入为一个整数(小于20),后面跟三个单字符,用空格分隔。整数为盘子的数目,后三个字符表示三个柱子的编号。
输出描述:
移动汉诺塔的步骤:
每行显示一步操作,具体格式为:
圆盘号:起始柱 -> 目标柱子
其中圆盘号从 1 开始
#include<stdio.h>
#include<iostream>
using namespace std;
void move(char a,char c,int n)
{
printf("%d: %c -> %c\n",n,a,c);
}
void Hanno(char a,char b,char c,int n)
{
if (n==1)
{
move(a,c,n);
}
else
{
Hanno(a,c,b,n-1);
move(a,c,n);
Hanno(b,a,c,n-1);
}
}
int main()
{
int n=0;
char a,b,c;
cin>>n>>a>>b>>c;
Hanno(a,b,c,n);
return 0;
}
由小到大顺序编号。