汉诺塔V 小鱼儿 2022-05-28 06:37 78阅读 0赞 Problem Description n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于 发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱 子从下往上的大小仍保持如下关系 : n=m+p+q a1>a2>...>am b1>b2>...>bp c1>c2>...>cq 计算所有会产生的系列总数. Input 包含多组数据,首先输入T,表示有T组数据.每个数据一行,是盘子的数 目N<30. Output 对于每组数据,输出移动过程中所有会产生的系列总数。 Sample Input 3 1 3 29 Sample Output 3 27 68630377364883 /*解析: 1.首先,k 号盘子的移动次数只与 k 下面的盘子数有关,而与 k 上面的盘子数无关, 具体原因自己想一下(有问题可以在下方留言),所以,原问题就可以转化为这样: 给定 k 个盘子,最上方的盘子移动了多少次。 2.找规律:假设最上方的盘子编号为 1 。 k==1,移动 1 次 ; k==2,1 移动 2次, 2 移动 1 次; k==3,1 移动 4 次; 2 移动 2 次; 3 移动 1 次; 由此,我们猜测在移动过程中,i 号盘子的移动次数是 i-1 号盘子的两倍(实际上这就是正确的); 则盘子数为 k ,1 号盘子的移动次数为 2^(k-1); 3.得出答案:ans=2^(n-k);*/ #include<stdio.h> #include<math.h> typedef long long ll; int main() { ll T,n,k,m; while(scanf("%lld",&T)!=EOF) { while(T--) { scanf("%lld%lld",&n,&k); ll x=pow(2,n-k); printf("%lld\n",x); } } return 0; }
相关 汉诺塔 问题V 题目链接 [汉诺塔问题V][V]. 题目: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_te 快来打我*/ 2023年07月05日 10:27/ 0 赞/ 1 阅读
相关 汉诺塔 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 赞/ 262 阅读
相关 汉诺塔 \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 阅读
相关 汉诺塔V Problem Description n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于 发生错移产生的系列就增加了,这种 小鱼儿/ 2022年05月28日 06:37/ 0 赞/ 79 阅读
相关 汉诺塔 def move(n, a, b, c): if n == 1: \ 如果a只有1盘子 print(a, '-->', c); \ 直接把盘子从a移到c els 迷南。/ 2022年05月18日 22:25/ 0 赞/ 339 阅读
还没有评论,来说两句吧...