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柱。

相关推荐
Wect4 分钟前
LeetCode 190. 颠倒二进制位:两种解法详解
前端·算法·typescript
刘永鑫Adam8 分钟前
BiB | 蒋超实验室开发 Kun-peng(鲲鹏):实现可扩展且准确的泛域宏基因组分类
人工智能·算法·机器学习·分类·数据挖掘
Yupureki12 分钟前
《Linux网络编程》1.网络基础
linux·运维·服务器·c语言·网络·c++
ltl14 分钟前
SM3 vs SHA-256:两个哈希函数的设计哲学与性能实测
后端·算法
知星小度S18 分钟前
算法训练之递归(一)
数据结构·算法
csdn2015_21 分钟前
Set<String> 类型取第一条记录
开发语言·windows·python
十五年专注C++开发21 分钟前
银河麒麟V10系统安装vcpkg的方法
c++·cmake·vcpkg
未来之窗软件服务24 分钟前
SenseVoicecpp ggml-webgpu大模型[AI人工智能(七十五)]—东方仙盟
c++·人工智能·算法·仙盟创梦ide·东方仙盟
寂柒28 分钟前
C++——堆
开发语言·c++
邂逅星河浪漫32 分钟前
【Java】@EqualsAndHashCode 注解解析
java·开发语言