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; }