有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。
问:如何移?最少要移动多少次?
#include <iostream>
using namespace std;
int i = 1;
void Hanoi(int n,char A,char B,char C){
if(n == 1){
cout<<"Move"<<n<<"from "<<A<<"to"<<B<<"\n";
}
else{
Hanoi(n-1,A,C,B); //把n-1从A移动到C
cout<<"Move"<<n<<"from "<<A<<"to"<<B<<"\n";//最后把n移动到B
Hanoi(n-1,C,B,A);//把n-1从C移动到B
}
}
int main(){
Hanoi(5,'A','B','C');
return 0;
}