将n个盘子从A座移到C座。
过程:
(1)将n-1个盘子借助C座移到B座;
(2)将第n个盘子从A座移到C座;
(3)将B座上的n-1个盘子借助A座移动C座。
#include <iostream>
int i=0;
void move(int n,char from,char to)
{
i++;
cout<<"第"<<i<<"步: 将第"<<n<<"个盘子从"<<from<<"移动到"<<to<<endl;
}
void f(int n,char from,char mid,char to)
{
if(n==1)
move(1,from,to);
else{
f(n-1,from,to,mid); //将n-1个盘子借助C从A移到B
move(n,from,to); //将第n个盘子从A移到C
f(n-1,mid,from,to); //将n-1个盘子借助A从B移到C
}
}
int main()
{
int n;
cin>>n;
f(n,'A','B','C');
return 0;
}
大三考研狗现在才搞懂汉诺塔,我怎么不吃屎呢