emmm汉诺塔问题,上课没听懂,看了一下慕课才明白了,赶紧拿小本本记一下
就是递归嘛,要想把n个盘子从A移到C,那就先把n-1个盘子移到B去,然后是不是剩下最底下那个就可以直接移到C了,然后再把n-1个从B移到C不就完成了。。
#include<iostream>
using namespace std;
void Hanoi(int n,char a,char b,char c)
{
if(n==1)
{
cout<<a<<"->"<<c<<endl;
return ;
}
//先把上面的n-1个盘子从a,通过c,移到b
Hanoi(n-1,a,c,b);
cout<<a<<"->"<<c<<endl; //n-1个移完了,之后剩下一个直接移到c
//然后将刚才的n-1个盘子从b,通过a,移到c
Hanoi(n-1,b,a,c);
return;
}
int main(){
int n;
cin>>n;
Hanoi(n,'A','B','C');
return 0;
}