信息学奥赛一本通 1205:汉诺塔问题 | OpenJudge 2.2 6261:汉诺塔问题
【题目链接】
[ybt 1205:汉诺塔问题
OpenJudge 2.2 6261:汉诺塔问题
【题目考点】
1. 递归
【解题思路】
设输入的左中右三个杆分别为a,b,c。题目要将摞在a杆上的n层汉诺塔移动到b杆上,在这一过程会借助c杆。
- 递归问题:将x杆上的k层汉诺塔移动到y杆上,在这一过程中会借助z杆。
- 递归关系:要想将x杆上的k层汉诺塔移动到y杆,可以先将x杆上的k-1层汉诺塔移动到z杆,借助y杆。
再将x杆上的圆盘移动到y杆,由于这一层圆盘是k层汉诺塔的底层,那么这个圆盘的编号为k,输出“把k号圆盘从x移动到y”。
最后将z杆上的k-1层汉诺塔移动到y杆,借助x杆。 - 递归出口:如果要移动的是0层汉诺塔,那么就不移动了。
【注意】由于输出数据较多,如果用cout输出可能会超时,最好使用scanf与printf。
【题解代码】
解法1:递归
#include <bits/stdc++.h>
using namespace std;
void hanoi(int k, char x, char y, char z)//输出k层汉诺塔从x杆移动到y杆借助z杆的解法
{if(k == 0)return;hanoi(k-1, x, z, y);//将k-1层汉诺塔从x杆移动到z杆借助y杆 printf("%c->%d->%c\n", x, k, y);//输出将k号圆盘从x移动到y hanoi(k-1, z, y, x);//将k-1层汉诺塔从z杆移动到y杆借助x杆
}
int main()
{int n;char a, b, c;scanf("%d %c %c %c", &n, &a, &b, &c); hanoi(n, a, b, c);return 0;
}
信息学奥赛一本通 1205:汉诺塔问题 | OpenJudge 2.2 6261:汉诺塔问题相关推荐
- 信息学奥赛一本通 1227:Ride to Office | OpenJudge NOI 4.6 2404:Ride to Office
[题目链接] ybt 1227:Ride to Office OpenJudge NOI 4.6 2404:Ride to Office 原题是英文题,虽说两题题意相同,但一本通网站没有对该问题进行直 ...
- 信息学奥赛一本通 1404:我家的门牌号 | OpenJudge NOI 2.1 7649:我家的门牌号 | 小学奥数 7649
[题目链接] ybt 1404:我家的门牌号 OpenJudge NOI 2.1 7649:我家的门牌号 OpenJudge NOI 小学奥数 7649:我家的门牌号 注意:一本通OJ和OpenJud ...
- 信息学奥赛一本通 1229:电池的寿命 | OpenJudge NOI 4.6 2469:电池的寿命
[题目链接] ybt 1229:电池的寿命 OpenJudge NOI 4.6 2469:电池的寿命 [题目考点] 1. 贪心 [解题思路] 1. 贪心选择性质的证明 电池分配主要有两步, 第一步:将 ...
- 信息学奥赛一本通 1181:整数奇偶排序 | OpenJudge NOI 1.10 06:整数奇偶排序
[题目链接] ybt 1181:整数奇偶排序 OpenJudge NOI 1.10 06:整数奇偶排序 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 解法1:将奇数和偶数分开,分别排序 ...
- 信息学奥赛一本通 1223:An Easy Problem | OpenJudge NOI 4.6 1455:An Easy Problem
[题目链接] ybt 1223:An Easy Problem OpenJudge NOI 4.6 1455:An Easy Problem [题目考点] 1. 数制 2. 枚举 [解题思路] 解法1 ...
- 信息学奥赛一本通 1177:奇数单增序列 | OpenJudge NOI 1.10 02:奇数单增序列
[题目链接] ybt 1177:奇数单增序列 OpenJudge NOI 1.10 02:奇数单增序列 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 题目中说的是要先取出奇数,再对奇数 ...
- 信息学奥赛一本通 1168:大整数加法 | OpenJudge NOI 1.6 10:大整数加法
[题目链接] ybt 1168:大整数加法 OpenJudge NOI 1.6 10:大整数加法 [题目考点] 1. 高精度 考察:高精加高精 高精度计算讲解 [解题思路] 注意:输入可能有多余的前导 ...
- 信息学奥赛一本通 1413:确定进制 | OpenJudge NOI 1.13 34:确定进制 | OpenJudge NOI 2.1 1973:确定进制
[题目链接] ybt 1413:确定进制 OpenJudge NOI 1.13 34:确定进制 OpenJudge NOI 2.1 1973:确定进制 注意:两OJ平台上题目条件不同,ybt中:2≤b ...
- 信息学奥赛一本通 1141:删除单词后缀 | OpenJudge NOI 1.7 20
[题目链接] ybt 1141:删除单词后缀 OpenJudge NOI 1.7 20:删除单词后缀 [题目考点] 1. 字符串处理 2. string类成员函数 取子串:substr(起始位置, 子 ...
最新文章
- 使用变量对象引出作用域链
- web 中防止sql注入
- 数字图像处理 实验一 图像的基本运算
- 安装windows服务提示输入用户名和密码
- 从Python 2切换到Python 3:您需要了解的内容
- 十款好用的PDF编辑软件推荐
- php 获得京东的数据,利用php封装函数抓取京东商城省市县数据
- ERP管理软件哪家好?比较好的ERP管理系统软件推荐
- Couldn't find leader offsets for Set news_topic
- 主流编程语言的介绍及特点
- python 删除word 某一章节_聊聊python 办公自动化之 Word(中)
- 服务器80端口找不到,如何查询服务器80端口被关闭
- 金融管理系统测试报告(内部测试案例)
- 领先招聘和支付平台Deel筹资1.56亿美元,成为独角兽企业
- LINUX | 如何开放vultr的端口
- Tencent Kona JDK11无暂停内存管理ZGC生产实践
- 2007年大连软件出口全国第三 荣获中国软件出口(外包)政府推进奖
- pwm一个时间单位_「硬见小百科」什么是PWM“死区”?
- 软件开发技术联盟 - 图书系列资源
- 电脑可安装的超炫实用软件