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

相关推荐
资深web全栈开发14 小时前
LeetCode 3573. 买卖股票的最佳时机 V - 动态规划解法详解
算法·leetcode·动态规划
leiming614 小时前
C++ 01 函数模板
开发语言·c++·算法
大道随心14 小时前
【QT】自动化设备控制界面搭建
开发语言·qt·自动化
Chen--Xing14 小时前
LeetCode LCR 119.最长连续序列
c++·python·算法·leetcode·rust
xiaoye-duck14 小时前
吃透C++类和对象(上):封装、实例化与 this 指针详解
c++
金枪不摆鳍14 小时前
算法2-链表
数据结构·算法·链表
yeshihouhou14 小时前
redis数据分片算法
redis·算法·哈希算法
李余博睿(新疆)14 小时前
c++经典练习题-分支练习(1)
数据结构·c++·算法
摆烂z14 小时前
maven中打包不打全部包+多线程打包
java·开发语言·maven
alibli14 小时前
Alibli深度理解设计模式系列教程
c++·设计模式