Hanoi Tower

Hanoi Tower

汉诺塔问题解决思路,递归
当只有一个盘子时直接将其从A柱移动到C柱(假设有A,B,C三个柱);
但有n个盘子时,先将上面n-1个盘子借助C柱移动到B柱,之后将第n个盘子移动到C柱,最后将剩余n-1个盘子借助A柱移动到C柱,完成;

汉诺塔问题解法如上,解决思路主体是递归,参考过其他博客的解决方法,如有冒犯,请联系我,立即自删。以下为个人编码过程

#include <iostream>

using namespace std;
/**
* 汉诺塔问题
* 递归方法解决,参考过网上其他博客解法
* 以下为个人编码过程
*/
int pcount = 1;
void move(int n, char from, char to){
    cout<<pcount++<<':'<<"move "<<n<<" from "<<from<<" to "<<to<<endl;
}
void hanoi(int n, char from , char to, char by){
    if(n == 1){
        move(n,from,to);
    }else{
        hanoi(n-1,from,by,to);
        move(n,from,to);
        hanoi(n-1,by,to,from);
    }
}
int main()
{
    cout<<"input n : ";
    int n;
    cin>>n;
    hanoi(n,'A','C','B');
    cout << "Hello world!" << endl;
    return 0;
}

个人github
都毕业好一阵子了,还是这个水平

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值