如何求解k柱汉诺塔问题呢
  • 板块学术版
  • 楼主StudyingPanda
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/20 14:47
  • 上次更新2023/11/20 18:25:21
查看原帖
如何求解k柱汉诺塔问题呢
1125003
StudyingPanda楼主2023/11/20 14:47

题目描述

汉诺塔(Hanoi Tower),又称河内塔。

传说大梵天创造世界的时候做了三根金刚石柱子,按左、中、右排序。大梵天在左侧的柱子上,从下往上按照大小顺序摞着64片黄金圆盘,越靠下的圆盘越大。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放到右侧的柱子上。并且规定,任何时候,较小的圆盘都不能被较大的圆盘压着,且一个步骤只能移动一个圆盘。

小明复刻了这个故事为一套游戏道具,但他发现以他有生之年是移不完这些圆盘的——实际上,原始的故事下,需要 2^64-1 = 18446744073709551615(约 1.8 * 10^19)个步骤才能移动完毕。

基于此,他将柱子的数量改为k个,再将圆盘的数量改为n个。

请你帮助小明计算,修改后的游戏需要多少个步骤能操作完毕。

关于输入

输入为两个正整数k和n,以空格隔开,分别代表修改后的游戏有k根柱子和n个圆盘。

提供三个输入样例。

关于输出

输出为一个正整数s,代表需要的最少步骤数。

提供三个输出样例。

例子输入

3 3

4 5

6 2

例子输出

7

13

3

对于第一个(首个;本部分所有计数由1开始;下同)样例,有以下7步骤完成的方式。 首先称呼每个圆盘的大小分别为1,2,3,柱子由左到右为a,b,c,初始时1,2,3都在柱子a 这7步依次为: 将1移到c - 2移到b - 1移到b - 3移到c - 1移到a - 2移到c - 1移到c可完成 且不存在6步或以内完成的方式

对于第二个样例,有以下13步骤完成的方式(方式不唯一)。 首先称呼每个圆盘的大小分别为1,2,3,4,5,柱子由左到右为a,b,c,d,初始时都在柱子a 这13步依次为: 将1移到c - 2移到b - 3移到d - 1移到b - 4移到c - 3移到c - 5移到d - 3移到a - 4移到d - 1移到c - 3移到d - 2移到d - 1移到d可完成 且不存在12步或以内完成的方式

对于第三个样例,有以下3步骤完成的方式(方式不唯一)。 首先称呼每个圆盘的大小分别为1,2,柱子由左到右为a,b,c,d,e,f,初始时都在柱子a 这3步依次为: 将1移到c - 2移到f - 1移到f可完成 且不存在2步或以内完成的方式 注意并不是所有柱子都必须用到

2023/11/20 14:47
加载中...