C++实现汉诺塔算法经典实例
本文所述为汉诺塔算法的C++代码的经典实现方法。
汉诺塔问题描述:3个柱为a、b、c,圆盘最初在a柱,借助b柱移到c柱。需要你指定圆盘数。
具体实现代码如下:
#include<iostream>
usingnamespacestd;
inttimes=0;//全局变量,搬动次数
//第n个圆盘从x柱搬到z柱
voidmove(intn,charx,charz)
{
cout<<"第"<<++times<<"步:将"<<n<<"号盘从"<<x<<"移到"<<z<<endl;
}
//将x柱上按直径自上而下由小到大编号为1至n的n个圆盘按规则搬到z柱上。y用作辅助柱
voidhanoi(intn,charx,chary,charz)
{
if(n==1)
move(1,x,z);//将编号为1的圆盘从x移到z
else{
hanoi(n-1,x,z,y);//将x上编号为1至n-1的圆盘移到y,z作辅助柱
move(n,x,z);//将编号为n的圆盘从x移到z
hanoi(n-1,y,x,z);//将y上编号为1至n-1的圆盘移到z,x作辅助柱
}
}
intmain()
{
intn;
cout<<"3个柱为a、b、c,圆盘最初在a柱,借助b柱移到c柱。请输入圆盘数:";
cin>>n;
hanoi(n,'a','b','c');
system("pause");
return0;
}