【题解】Hanoi
题目描述
有三根柱A,B,C。在柱A上有N块盘片,所有盘片都是大的在下面,小片能放在大片上面。并依次编好序号,现要将A上的N块片移到C柱上,每次只能移动一片,而且在同一根柱子上必须保持上面的盘片比下面的盘片小,请输出移动方法。
输入格式
一行,仅一个整数N(1≤N≤15),表示A柱上的盘片数。
输出格式
输出盘片的移动步骤。
输入样例
3
输出样例
A-1-C
A-2-B
C-1-B
A-3-C
B-1-A
B-2-C
A-1-C
题解
递归入门题,递归过程中传递要更换盘片的对应柱的编号即可。
当我们要将第$x$个盘片从$begin$放到$end$时,我们先避开$end$,提前将前$x-1$个盘移动到不是$begin$也不是$end$的柱子$mid$上,最后再把$mid$上的$x-1$个盘移动到$end$上。
#include<cstdio> using namespace std; int n,op; void f(int x,char begin,char mid,char end)
{
if(x==)
{
if(op++) printf("\n");
printf("%c-%d-%c",begin,x,end);
return;
}
f(x-,begin,end,mid); if(op++) printf("\n");
printf("%c-%d-%c",begin,x,end); f(x-,mid,begin,end);
} int main()
{
scanf("%d",&n);
f(n,'A','B','C'); return ;
}
参考程序
【题解】Hanoi的更多相关文章
- Lintcode227 Mock Hanoi Tower by Stacks solution 题解
[题目描述] In the classic problem of Towers of Hanoi, you have 3 towers and N disks of different sizes w ...
- 【题解】Hanoi塔问题
题目描述 有三根柱A,B,C.在柱A上有N块盘片,所有盘片都是大的在下面,小片能放在大片上面.并依次编好序号,现要将A上的N块片移到C柱上,每次只能移动一片,而且在同一根柱子上必须保持上面的盘片比下面 ...
- 【题解】Hanoi双塔问题
题目描述 给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有空的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形).现要将这些圆盘移到C柱上, ...
- Codeforces Gym 100114 A. Hanoi tower 找规律
A. Hanoi tower Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Descript ...
- Hanoi双塔问题(递推)
Hanoi双塔问题 时间限制: 1 Sec 内存限制: 128 MB提交: 10 解决: 4[提交][状态][讨论版][命题人:外部导入] 题目描述 给定A,B,C三根足够长的细柱,在A柱上放有2 ...
- codeforces-777E Hanoi Factory (栈+贪心)
题目传送门 题目大意: 现在一共有N个零件,如果存在:bi>=bj&&bj>ai的两个零件i,j,那么此时我们就可以将零件j放在零件i上.我们现在要组成一个大零件,使得高度 ...
- Towers of Hanoi Strike Back (URAL 2029)
Problem The Tower of Hanoi puzzle was invented by French mathematician Édouard Lucas in the second h ...
- [题目] 4座塔的Hanoi
题目地址 经典递推题. 解出 n (1<=n<=12) 个盘子 \(4\) 座塔的Hanoi(汉诺塔)问题最少需多少步?(1到12每个答案分别占一行) 题解 在原Hanoi问题中 \(d[ ...
- [高精度]P1096 Hanoi 双塔问题
Hanoi 双塔问题 题目描述 给定A.B.C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形). 现 ...
随机推荐
- 使用redis实现生产者消费者模式
本次主要分享一下使用redis做缓存队列,实现生产者消费者模式. 首先先来看一下redis提供的列表操作接口.像ListRightPush就和符合队列先进先出的原则. 然后围绕这个列表已下单为例简要实 ...
- NFV论文集(二)
一 文章名称:VNF Placement with Replication for Load Balancing in NFV Networks 发表时间:2017 期刊来源:ICC: IEEE In ...
- 单例模式及设计url分发
1.单例模式 2.admin源码解析 3.注册源码流程图 3.admin之url方法的使用 4.admin源码之url设计 5.设计url源码流程 6.总结 1.单例模式 https://www. ...
- 【学习总结】GirlsInAI ML-diary day-1-初识Python-Anaconda-Jupyter
[学习总结]GirlsInAI ML-diary 总 原博github链接-day1 初识Python-Anaconda-Jupyter: 1-下载并安装Anaconda 官网下载,按指导安装 ana ...
- 【学习总结】GirlsInAI ML-diary day-4:变量/Variable
[学习总结]GirlsInAI ML-diary 总 原博github链接-day4 变量/Variable 变量是计算机编程中一个很基础的概念,在计算机程序中,variables are reser ...
- Linux下用rm删除的文件的恢复方法
Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站https://www.linuxidc.com/Linux/2008-08/14744.htm linu ...
- 通过修改Tomcat配置,解决乱码问题
贴图,问题如下: tomcat使用的默认编码方式是iso8859-1 修改tomcat下的conf/server.xml文件 找到如下代码: <Connector port="8 ...
- awr format
AWR-Format工具 在Chrome高版本中配置使用AWR-Format for Chrome插件
- 利用js给datalist或select动态添加option选项
<!DOCTYPE html> <html> <head> <title>鼠标点击时加载</title> <script type=& ...
- C#Note13:如何在C#中调用python
前言 IronPython 是一种在 .NET 及 Mono上的 Python 实现,由微软的 Jim Hugunin(同时也是 Jython 创造者) 所发起,是一个开源的项目,基于微软的 DLR ...