#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <cmath>
#include <time.h>
#include <iomanip>
#include <cctype>
#include <string>
using namespace std;
typedef long long ll;
const ll Mod = 1e9 + 7;
/*解题步骤(将塔A的n层移动至塔C)
1.将前n-1层移动至塔B(与主问题操作一致,递归即可)
2.将第n层移动至塔C
3.将那n-1层移动至塔C(与主问题操作一致,递归即可)
递归中目标柱,起始柱与工具柱会改变,改变传参即可
*/
void move(int n,char A,char B,char C){//层数,起始柱,工具柱,目标柱
if(n==1){
printf("%c→%c\n",A,C); //直接起始柱→目标柱
}
else{
move(n-1,A,C,B);//步骤1,此时B是目标柱,C是工具柱
printf("%c→%c\n",A,C); //步骤2
move(n-1,B,A,C);//步骤3,此时C是目标柱,A是工具柱
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin>>n
char a='A',b='B',c='C';
move(n,a,b,c);
return 0;
}
输入:
4
输出:
A→C
B→C
A→B
C→A
C→B
A→B
A→C
B→C
B→A
C→A
B→C
A→B
A→C
B→C