题目描述
1、一次只许移动一个盘
2、任何时候、任何柱子不允许把大盘放在小盘上面。
3、可使用任一一根立柱暂存圆盘。
问:如何使用最少步数实现n个盘子的移动?打印出具体移动方案。
输入格式
一行一个数n, 1<= n <= 18
输出格式
输出若干行,第i行表示第i步的移动方案。具体格式参见输出样例。
样例
样例输入
复制3
样例输出
复制A->C
A->B
C->B
A->C
B->A
B->C
A->C
_____________________________________________________________________________
写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
_____________________________________________________________________________
#include <bits/stdc++.h>
using namespace std;
void f(int n,char a,char b,char c){if(n==1){cout<<a<<"->"<<c<<endl;return;}f(n-1,a,c,b);cout<<a<<"->"<<c<<endl;f(n-1,b,a,c);
}
int main(){int n;cin>>n;f(n,'A','B','C');
}