尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

东方博宜OJ 2420:汉诺塔(4) ← 递归

东方博宜OJ 2420:汉诺塔(4) ← 递归
📅 发布时间:2026/6/18 16:40:56

​【题目来源】
https://oj.czos.cn/p/2420

【题目描述】
汉诺塔的问题大家都已经很熟悉了,有三个柱子,第 1 个 A 柱子上有一些大小不一的 n 个金片,初始状态下保证金片从上到下按照从小到大的顺序叠放,并按照 1~n 的顺序编号。
要把金片从 A 柱移动到 C 柱,可以借助 B 柱,移动过程中不能出现大金片在小金片上面的情况。
现增加一条规则:移动过程中,只允许将金片移到相邻的柱子,也就是可以从 A 柱移动金片到 B 柱,但不能从 A 直接移动金片到 C 柱;也就是说,每次移动一定会移动到 B 柱,或者从 B 柱移出。
请问:如果有 n 个金片需要从 A 柱移动到 C 柱,应该怎样移动。

【输入格式】
一个整数 n,代表 A 柱上金片的数量。(n≤5)

【输出格式】
输出若干行,第 i 行输出第 i 步需要将哪个立柱上的金片移动到哪个立柱。​​​​​​​

【输入样例】
2

【输出样例】
A To B
B To C
A To B
C To B
B To A
B To C
A To B
B To C​​​​​​​

【数据范围】
n≤5

【算法分析】
● 带有相邻移动限制的汉诺塔问题,移动次数为 3^n-1。

【算法代码】

#include <bits/stdc++.h>
using namespace std;void hnt(int n, char st, char to, char aux) {if(n==0) return;if(n==1) {if((st=='A' && to=='B') || (st=='B' && to=='A') ||(st=='B' && to=='C') || (st=='C' && to=='B')) {cout<<st<<" To "<<to<<endl;} else {cout<<st<<" To "<<aux<<endl;cout<<aux<<" To "<<to<<endl;}return;}if((st=='A' && to=='C') || (st=='C' && to=='A')) { //n>1hnt(n-1,st,to,aux); //A->Ccout<<st<<" To "<<aux<<endl; //A->Bhnt(n-1,to,st,aux); //C->Acout<<aux<<" To "<<to<<endl; //B->Chnt(n-1,st,to,aux); //A->C} else {hnt(n-1,st,aux,to);cout<<st<<" To "<<to<<endl;hnt(n-1,aux,to,st);}
}int main() {int n;cin>>n;hnt(n,'A','C','B');return 0;
}/*
in:
2out:
A To B
B To C
A To B
C To B
B To A
B To C
A To B
B To C
*/





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/156206151
https://blog.csdn.net/hnjzsyjyj/article/details/156206554
https://blog.csdn.net/hnjzsyjyj/article/details/156201255
https://blog.csdn.net/hnjzsyjyj/article/details/156192874
https://blog.csdn.net/hnjzsyjyj/article/details/156204715
https://blog.csdn.net/hnjzsyjyj/article/details/156185382
https://blog.csdn.net/hnjzsyjyj/article/details/156182882

 

​

相关新闻

  • 2025年知名的生涯规划设备/生涯规划模拟系统校园应用优选榜 - 品牌宣传支持者
  • 2025年12月陕西地弹门维修公司最新排名盘点:技术实力与本地化服务双维度测评 - 深度智识库
  • 香港服务器租用带宽类型全解

最新新闻

  • Python 练习题讲解 3 · 字符串
  • 东营换轮胎怎么选?本地市场盘点、轮胎选购避坑+门店筛选完整指南 - 国麟测评
  • Element Plus 组件库 + 美化页面
  • 上海澳洲留学社科类文书中介:精选案例客观评估 - 虚拟星辰
  • 微信支付AI卡,充多少花多少
  • 英雄联盟Akari助手:从青铜到王者的终极游戏效率提升指南

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号