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

相关推荐
All for pursuit.15 分钟前
【分治-3】347.前K个高频元素
数据结构·c++·算法·leetcode
m0_3807438724 分钟前
PHP 8.4的新语法怎么用才规范
开发语言·php
头发够用的程序员27 分钟前
TensorRT 自定义算子插件实战(一):从零手写 customScaledTanh
c++·人工智能·pytorch·python·深度学习·边缘计算·jetson
哭泣方源炼蛊32 分钟前
正则表达式c++内容汇集
数据库·c++·mysql·正则表达式
索尔~古德曼35 分钟前
CF(1400-1400&1300-1500)错题集
算法
阿狗童鞋36 分钟前
Java并发编程实战指南
java·开发语言
别动我齐刘海43 分钟前
简历技术栈全面复习——UDP / TCP / CAN / ZMQ / Protobuf 通信工程
网络·c++·python·tcp/ip·机器学习·udp·github
phltxy1 小时前
C 语言自定义类型:结构体、位段、枚举与联合体
c语言·开发语言
Sarvartha1 小时前
对象创建与引用
java·开发语言
All for pursuit.2 小时前
【二分查找-2】34.在排序数组中查找元素的第一个和最后一个位置
数据结构·c++·算法·leetcode