汉诺塔
来源:互联网 发布:html嵌入php 编辑:程序博客网 时间:2024/06/09 18:14
汉诺塔
Problem Description
汉诺塔(又称河内塔)问题是印度的一个古老的传说。
开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒A、B和C,A上面套着n个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从A棒搬到C棒上,规定可利用中间的一根B棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。
僧侣们搬得汗流满面,可惜当n很大时这辈子恐怕就很搬完了。
聪明的你还有计算机帮你完成,你能写一个程序帮助僧侣们完成这辈子的夙愿吗?
Input
输入金片的个数n。这里的n<=10。
Output
输出搬动金片的全过程。格式见样例。
Example Input
2
Example Output
Move disk 1 from A to BMove disk 2 from A to CMove disk 1 from B to C
Hint
可以用递归算法实现。
体会:
刚开始做这题的时候没有头绪,不敢做,放置了很久才重新来审视这个题。上网找视频,看着视频把代码敲出来,然后再细细体会,删掉代码自己独立又推敲了一次,这才把网上老师讲的话体会到!!
我想这就是进步——避开你的安逸区,做你怕的事情。
代码如下:
#include<stdio.h>void Move(int n, char a, char b){ printf("Move disk %d from %c to %c\n", n, a, b);}void Hanoi(int n, char a, char b, char c)//将第n号圆盘借助于c从a移到b上{ if (n == 1) Move(n, a, b); if (n > 1) { Hanoi(n - 1, a, c, b); Move(n, a, b); Hanoi(n - 1, c, b, a); }}int main(){ int n; scanf("%d", &n); Hanoi(n, 'A', 'C', 'B'); return 0;}/***************************************************User name: ***Result: AcceptedTake time: 0msTake Memory: 160KBSubmit time: 2017-06-04 21:01:36****************************************************/
阅读全文
0 0
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 自动加载函数流程之bootstrap autoload.php
- 【DRP】转发与重定向的区别
- 496. Next Greater Element I
- Windows的MAX_PATH
- shell脚本编程
- 汉诺塔
- 1.10 使用xshell连接linux
- boost中的shared_ptr的一些理解
- 常见的八种导致 APP 内存泄漏的问题
- scrapy爬虫【4】→爬百度美女图
- DirectX11(一)
- 中断机构和中断处理程序
- 如何解决IAR不能设置断点的问题
- 1.11 1.12putty密钥认证及xshell秘钥登陆