汉诺塔

2019-06-23  本文已影响0人  Vincy_ivy
#include <iostream>
#include<cstdio>
using namespace std;
int times=0;
//第n个圆盘从x柱搬到z柱 
void move(int n,char x,char z){
    cout<<"第"<<++times<<"步:将"<<n<<"号盘从"<<x<<"移到"<<z<<endl; 
}

void hanoi(int n,char x,char y ,char z){
    if(n==1)
        move(1,x,z);
    else{
        hanoi(n-1,x,z,y);//将x上编号为1至n-1的圆盘通过z移到y 
        move(n,x,z);//将编号为n的圆盘从x移到z
        hanoi(n-1,y,x,z);//将y上编号为1至n-1的圆盘通过x移到z 
    }
}

int main() {
    int n;
    cout<<"3个柱子为a,b,c,圆盘最初在a柱,借助b柱移到c柱,请输入圆盘数:";
    cin>>n;
    hanoi(n,'a','b','c'); 
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读