C++解决汉诺塔问题

下面是C++中经典的递归算法实现汉诺塔问题:

复制代码
#include <iostream>
using namespace std;
 
void move(int n, char from, char to, char temp)
{
    if(n == 1)
    {
        cout << "move disk 1 from " << from << " to " << to << endl;
    }
    else
    {
        move(n - 1, from, temp, to);
        cout << "move disk " << n << " from " << from << " to " << to << endl;
        move(n - 1, temp, to, from);
    }
}
 
int main()
{
    int n = 3;
    move(n, 'A', 'C', 'B');
    return 0;
}

以上代码中,move函数用于移动汉诺塔的盘子,其中n为盘子的数目,from表示原柱,to表示目标柱,temp表示中间柱。当只有一个盘子时,直接从from柱移动到to柱即可,当有多个盘子时,先把上面的n-1个盘子从from柱经由to柱移动到temp柱,再把最后一个盘子从from柱移动到to柱,最后再把n-1个盘子从temp柱经由from柱移动到to柱。

相关推荐
市场部需要一个软件开发岗位2 分钟前
一个无人机平台+算法监督平台的离线部署指南
java·python·算法·bash·无人机·持续部署
ygklwyf4 分钟前
零基础薄纱树套树——高级数据结构的结合
算法·线段树·树状数组·树套树
Cinema KI5 分钟前
C++11(中):可变参数模板将成为重中之重
开发语言·c++
凯子坚持 c7 分钟前
C++基于微服务脚手架的视频点播系统---客户端(2)
开发语言·c++·微服务
Vivienne_ChenW7 分钟前
Spring 事件驱动用法总结
java·开发语言·spring boot·spring
Beginner x_u8 分钟前
JavaScript 中浅拷贝与深拷贝的差异与实现方式整理
开发语言·javascript·浅拷贝·深拷贝
柯一梦9 分钟前
STL2--vector的介绍以及使用
开发语言·c++
txinyu的博客9 分钟前
解析muduo源码之 EPollPoller.h & EPollPoller.cc
c++
云霄IT16 分钟前
go语言post请求遭遇403反爬解决tls/ja3指纹或Cloudflare防护
开发语言·后端·golang
自动化控制仿真经验汇总17 分钟前
电子抑振控制实验中MATLAB+示波器的用法-PART-RIGOL-电磁制振
开发语言·matlab