44| 汉诺塔问题

代码实现

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int n;
char a, b, c;

// 递归函数:把 n 个盘子从 src 杆,借助 tmp 杆,移动到 dst 杆
void dfs(int n, char src, char tmp, char dst)
{
    if (n == 0) return;
    // 1. 先把 n-1 个盘子从 src 移到 tmp,借助 dst
    dfs(n-1, src, dst, tmp);
    // 2. 把第 n 个盘子从 src 移到 dst
    cout << src << "->" << n << "->" << dst << endl;
    // 3. 把 n-1 个盘子从 tmp 移到 dst,借助 src
    dfs(n-1, tmp, src, dst);
}

int main()
{
    cin >> n >> a >> b >> c;
    // 题目要求:把 a 杆的 n 个盘子移到 b 杆,借助 c 杆
    dfs(n, a, c, b);
    return 0;
}
相关推荐
yuyuzururu2 小时前
进程通信实验报告
c++
米粒12 小时前
力扣算法刷题 Day 15
算法·leetcode·职场和发展
花姐夫Jun2 小时前
WebGL学习-czm_getMaterial详解
学习·webgl
野犬寒鸦2 小时前
从零起步学习计算机操作系统:内存管理篇
服务器·后端·学习·缓存·面试
程序员小崔日记2 小时前
一道基础计算题卡在 40 分,求助判题规则问题
java·算法·竞赛
愣头不青2 小时前
543.二叉树的直径
java·算法
夏日听雨眠2 小时前
文件学习终
windows·学习
此方ls2 小时前
机器学习聚类算法二——DBSCAN(Density-Based Spatial Clustering of Applications with Noise)
算法·机器学习·聚类
add45a2 小时前
C++中的原型模式
开发语言·c++·算法