题库/G4027

#G4027. [GESP202609 四级] 新汉诺塔

    传统题 难度: 普及 标签>GESPGESP四级递推状态设计数学建模
时间限制1000 ms
内存限制512 MiB
通过率100%1 / 1 次提交
题目描述 查看题解 开始编程Alt+E

G4027 · [GESP202609 四级] 新汉诺塔

退出在线编程模式
普及 读懂题意,让每一次思考成为成长。
时间限制1000 ms
内存限制512 MiB
通过率100%1 / 1 次提交

汉诺塔问题是最经典的递推问题之一:

有三个可以放圆盘柱子,编号为 AA、BB 和 CC。

开始时柱子 AA 上套着 nn 个圆盘,它们从上到下按照从小到大的顺序排列。

我们的任务是要把这 nn 个圆盘移到柱子 CC 上,并保持它们的原有顺序不变。

在移动圆盘的过程中,需要遵守以下规则:

  1. 圆盘只能从一根柱子顶部拿出,从另一根柱子顶部放入。
  2. 每次只能移动一个圆盘。
  3. 小圆盘必须时刻位于大圆盘之上。

小杨在学习了汉诺塔问题后,决定添加一个新规则:

  1. 每一次移动,圆盘只能从 AA 移动到 BB,从 BB 移动到 CC,或者从 CC 移动到 AA;其它移动是不允许的。

在新规则下,给定圆盘数量 nn,试问最少移动步数是多少?

输入格式

输入一个正整数 nn,表示圆盘的数量。

输出格式

输出一个整数,表示在新规则下将 nn 个圆盘从 AA 移动到 CC 所需的最少移动步数。

2
7
3
21

说明与数据范围

样例解释 1

以下步骤是最佳的(编号为 1 的是小盘,为 2 的是大盘):

  1. 将 1 从 AA 移动到 BB;
  2. 将 1 从 BB 移动到 CC;
  3. 将 2 从 AA 移动到 BB;
  4. 将 1 从 CC 移动到 AA;
  5. 将 2 从 BB 移动到 CC;
  6. 将 1 从 AA 移动到 BB;
  7. 将 1 从 BB 移动到 CC。

可以证明没有更少步骤可以完成这个任务。

数据范围

对于所有数据,n≤20n \le 20。

来源与评测数据

GESP C++ 4级,2026年09月第1题。

本题含10个自行生成的测试点,非官方原版测试数据;每题总分100分。

题目信息

#723
100%

1 次通过 · 1 次提交

练习难度 普及
时间限制
1000ms
内存限制
512MiB

题目标签

暂无标签
上传者