【题目链接】

[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:汉诺塔问题相关推荐

  1. 信息学奥赛一本通 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 原题是英文题,虽说两题题意相同,但一本通网站没有对该问题进行直 ...

  2. 信息学奥赛一本通 1404:我家的门牌号 | OpenJudge NOI 2.1 7649:我家的门牌号 | 小学奥数 7649

    [题目链接] ybt 1404:我家的门牌号 OpenJudge NOI 2.1 7649:我家的门牌号 OpenJudge NOI 小学奥数 7649:我家的门牌号 注意:一本通OJ和OpenJud ...

  3. 信息学奥赛一本通 1229:电池的寿命 | OpenJudge NOI 4.6 2469:电池的寿命

    [题目链接] ybt 1229:电池的寿命 OpenJudge NOI 4.6 2469:电池的寿命 [题目考点] 1. 贪心 [解题思路] 1. 贪心选择性质的证明 电池分配主要有两步, 第一步:将 ...

  4. 信息学奥赛一本通 1181:整数奇偶排序 | OpenJudge NOI 1.10 06:整数奇偶排序

    [题目链接] ybt 1181:整数奇偶排序 OpenJudge NOI 1.10 06:整数奇偶排序 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 解法1:将奇数和偶数分开,分别排序 ...

  5. 信息学奥赛一本通 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 ...

  6. 信息学奥赛一本通 1177:奇数单增序列 | OpenJudge NOI 1.10 02:奇数单增序列

    [题目链接] ybt 1177:奇数单增序列 OpenJudge NOI 1.10 02:奇数单增序列 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 题目中说的是要先取出奇数,再对奇数 ...

  7. 信息学奥赛一本通 1168:大整数加法 | OpenJudge NOI 1.6 10:大整数加法

    [题目链接] ybt 1168:大整数加法 OpenJudge NOI 1.6 10:大整数加法 [题目考点] 1. 高精度 考察:高精加高精 高精度计算讲解 [解题思路] 注意:输入可能有多余的前导 ...

  8. 信息学奥赛一本通 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 ...

  9. 信息学奥赛一本通 1141:删除单词后缀 | OpenJudge NOI 1.7 20

    [题目链接] ybt 1141:删除单词后缀 OpenJudge NOI 1.7 20:删除单词后缀 [题目考点] 1. 字符串处理 2. string类成员函数 取子串:substr(起始位置, 子 ...

最新文章

  1. 使用变量对象引出作用域链
  2. web 中防止sql注入
  3. 数字图像处理 实验一 图像的基本运算
  4. 安装windows服务提示输入用户名和密码
  5. 从Python 2切换到Python 3:您需要了解的内容
  6. 十款好用的PDF编辑软件推荐
  7. php 获得京东的数据,利用php封装函数抓取京东商城省市县数据
  8. ERP管理软件哪家好?比较好的ERP管理系统软件推荐
  9. Couldn't find leader offsets for Set news_topic
  10. 主流编程语言的介绍及特点
  11. python 删除word 某一章节_聊聊python 办公自动化之 Word(中)
  12. 服务器80端口找不到,如何查询服务器80端口被关闭
  13. 金融管理系统测试报告(内部测试案例)
  14. 领先招聘和支付平台Deel筹资1.56亿美元,成为独角兽企业
  15. LINUX | 如何开放vultr的端口
  16. Tencent Kona JDK11无暂停内存管理ZGC生产实践
  17. 2007年大连软件出口全国第三 荣获中国软件出口(外包)政府推进奖
  18. pwm一个时间单位_「硬见小百科」什么是PWM“死区”?
  19. 软件开发技术联盟 - 图书系列资源
  20. 电脑可安装的超炫实用软件

热门文章

  1. 【移动开发】SparseArray替代HashMap
  2. Linux Kernel File IO Syscall Kernel-Source-Code Analysis(undone)
  3. 从天而降的文字,文字掉落效果
  4. 详解数据科学与数理统计的基本概念
  5. 辞旧迎新,胖了几斤?数据告诉你,这种东西你就不该吃
  6. 干货:用Python进行数据清洗,这7种方法你一定要掌握
  7. 聊聊redo log是什么?
  8. Kafka中副本机制的设计和原理
  9. 可能是全网最通俗易懂的微服务架构改造解读
  10. IDEA入门(一):简介、安装