#include<stdio.h>//从A到C
void hanoi(int i,char a,char b,char c){//从a到c,b作为中转
if(i==1) printf("%d from %c to %c\n",i,a,c);//如果只剩下最后一片
else{
hanoi(i-1,a,c,b);//首先将最上面i-1个从a移动到b,c作为中转
printf("%d from %c to %c\n",i,a,c);//将最后一块从a移动到c
hanoi(i-1,b,a,c);//最后将那i-1个从b移动到c,a作为中转
}
}
int main(){
int ans[101]={0};
int n;
scanf("%d",&n);
for (int i=1;i<=n;i++)
ans[i]=2*ans[i-1]+1;//根据递推式求移动总数
printf("%d\n",ans[n]);
hanoi(n,'A','B','C');
return 0;
}
第七天
盲点:递推技巧