设a, b, c是三个塔座,开始时,a上有n个圆盘,自上而下,由大到小,圆盘编号从1-n,现在要将这些圆盘从a移动到b顺序不变。
移动规则:1.每次只能移动一个。2.任何情况大的不能在小的下面。3.满足1,2情况下,可以在abc上任意移动。
#include<iostream>
using namespace std;
int total=0;
void hanoi(int n,int a,int b,int c)//n个数,a源柱,b目标,c辅助
{
if(n > 0){
hanoi(n-1, a, c, b);
total++;
cout<<a<<"->"<<b<<endl;
hanoi(n-1, c, b, a);
}
}
int main()
{
int n;
cin>>n;
hanoi(n,1,2,3);
cout<<"total:"<<total;
return 0;
}