汉诺塔 约定不等于承诺〃 2022-06-11 03:24 260阅读 0赞 ### 汉诺塔 ### Time Limit: 1000MS Memory Limit: 65536KB [Submit][] [Statistic][] #### 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 B Move disk 2 from A to C Move disk 1 from B to C #### Hint #### 可以用递归算法实现。 代码: ### ### 汉诺塔问题: 仍然是从最简单的开始分析: 若n==1直接将n从A移到C; 若n==2,现将第1块从A移到B,再将第二块移到C,再将1移到C; 第n块,1:将第n-1从A借助C移到B, 2:将第n块移到C, 3:再将第n-1从B借助A移到C; 总的步数f(n) = 2\*f(n-1)+1; 将问题从最简单的情况入手使问题简单化。 #include <stdio.h> #include <stdlib.h> void move(int n,char a,char b,char c) { if(n==1) { printf("Move disk %d from %c to %c\n",n,a,c); } else { move(n-1,a,c,b); printf("Move disk %d from %c to %c\n",n,a,c); move(n-1,b,a,c); } } int main() { int n; scanf("%d",&n); move(n,'A','B','C'); return 0; } [Submit]: http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestsubmit/cid/2186/pid/1200.html [Statistic]: http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/conteststatus/cid/2186/pid/1200.html
相关 汉诺塔 汉诺塔 1.目标 2.思路(算法 ) 3.实现 4.总结(如何理解这个算法) 注意: 1.目标 目标很明确就是将下图中A柱子上 淡淡的烟草味﹌/ 2022年11月02日 13:14/ 0 赞/ 66 阅读
相关 汉诺塔 package com.someusefuldesign.demo; /假设有A B C三个柱子移动的顺序为: / public class 妖狐艹你老母/ 2022年08月13日 15:54/ 0 赞/ 233 阅读
相关 汉诺塔 Problem Description 汉诺塔(又称河内塔)问题是印度的一个古老的传说。 开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒A、B和C,A上面套着 Dear 丶/ 2022年06月17日 05:28/ 0 赞/ 309 阅读
相关 汉诺塔 汉诺塔 Time Limit: 1000MS Memory Limit: 65536KB [Submit][] [Statistic][] Prob 约定不等于承诺〃/ 2022年06月11日 03:24/ 0 赞/ 261 阅读
相关 汉诺塔 \include<stdio.h> void hanoi(int n,char A,char B,char C) \{ if(n==1) printf("Move s 逃离我推掉我的手/ 2022年06月10日 12:57/ 0 赞/ 308 阅读
相关 汉诺塔 include <stdio.h> void hannuota(int n,char A,char B,char C){ if(1 == n){ 川长思鸟来/ 2022年06月07日 13:06/ 0 赞/ 228 阅读
相关 汉诺塔 汉诺塔 Time Limit: 1000 ms Memory Limit: 65536 KiB [Submit][] [Statistic][] Problem D 怼烎@/ 2022年05月29日 05:58/ 0 赞/ 271 阅读
相关 汉诺塔 def move(n, a, b, c): if n == 1: \ 如果a只有1盘子 print(a, '-->', c); \ 直接把盘子从a移到c els 迷南。/ 2022年05月18日 22:25/ 0 赞/ 338 阅读
相关 汉诺塔 include <iostream> using namespace std; int main() { void hanno(int 冷不防/ 2021年09月29日 12:14/ 0 赞/ 469 阅读
还没有评论,来说两句吧...