利用递归算法:
第一步:将n-1个盘子移到B
第二步:将第n个盘子移到C
第三步:将n-1个盘子移到C
#include<iostream> using namespace std; int count=0; void move(int n,char a,char b) //n表示盘子号a表示盘子的起始位置 b表示盘子到达的位置 { cout<<a<<"->"<<b<<endl; count++; } void towerfinish(int n,char a,char b,char c) //n表示要移动的盘子的数目 //将a位置的盘子移动到c,以b为辅助塔 { if(n==1) { move(1,a,c); } else { towerfinish(n-1,a,c,b); move(n,a,c); towerfinish(n-1,b,c,a); } } int main() { char a=‘A‘; char b=‘B‘; char c=‘C‘; int d; cout<<"请输入盘子的数量:"<<endl; cin>>d; towerfinish(d,a,b,c); cout<<"一共移动了"<<count<<"次"<<endl; }
时间: 2024-10-23 15:59:31