这里简述一下Hanoi问题:在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
代码实现:
#include<iostream>
using namespace std;
static void Hanoi(int n,char A,char B,char C){
if (n==1) cout<<A<<"->"<<C<<" "; //只有一个盘子直接A->C
else{
Hanoi(n-1,A,C,B); //上面n-1块盘子A->B
cout<<A<<"->"<<C<<" "; // 第n块盘子直接A->C
Hanoi(n-1,B,A, C); //n-1块盘子B->C
}
}
int main(){
int n;
cin>>n;
Hanoi(n,'A','B','C');
return 0;
}
运行结果: