# 题意
# 题解
1) n个在a柱,先通过c将n-1移到b柱上
2) 将最大的一个移动到c柱子
3) 再通过a柱将n-1个从b移动到c
4) 初始将一个移动到另一个所需要的步数为1
5) 移动n个盘子所需要的移动次数:2^n-1
# 递归
#include<bits/stdc++.h> using namespace std; void move (int m,char a,char b,char c) { if(m==1) { printf("Move disk %d from %c to %c\n",m,a,c); } else{ move(m-1,a,c,b); printf("Move disk %d from %c to %c\n",m,a,c); move(m-1,b,a,c); } } int main() { int n; scanf("%d",&n); move (n,'A','B','C'); return 0; }
# 递推
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int f[N]; int main(){ int n; cin>>n; f[1]=1; for(int i=2;i<=n;i++) f[i]=f[i-1]*2+1; cout<<f[n]; }