汉诺塔F402
描述
经典的汉诺塔游戏相信很多同学都会玩的,规则就不用赘述,百科一下就OK。有三个柱子A,B,C,A柱子上套有n个大小不等的盘子,任意两个盘子,上面的盘子一定小于下面的盘子。现在请你编写程序计算如何将这n个盘子按照规则移到C柱子上,每次只能移动一个盘子,移动过程中可以借助B柱子,任意状态,各个柱子的盘子必须小盘在放在大盘子上面。现在输入两个正整数n和m,表示有n个盘子,请你输出第m步的移动方法。
点击体验汉诺塔小游戏
输入
两个正整数n和m
输出
第m步的移动方法
输入样例 1
3 4
输出样例 1
A-->C
提示
数据范围:0<n<16,0<m<2^n。样例说明: 当n=3时,第一步A-->C,第二步A-->B,第三步C-->B,第四步A-->C,第五步B-->A,第六步B-->C,第七步A-->C,本题应该输出第四步A-->C。
#include <bits/stdc++.h>
using namespace std;
int cnt=0;
int m,k;
void han(int n,char a,char b,char c)
{
if(n==0) return;
han(n-1,a,c,b);
cnt++;
if(cnt==k)
{
cout<<a<<"-->"<< c<< endl;
exit(0);
}
han(n-1,b,a,c);
}
int main()
{
cin>>m>>k;
han(m,'A','B','C');
return 0;
}