C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【顺时针单向递归与双状态递推】GESP四级 / CSP-J 题解:luogu-B4579 [GESP202609 四级] 新汉诺塔
CCF GESP 2026年9月认证(第十五次认证)C++ 四级试题,洛谷 B4579。本题严格遵循 CCF GESP 官方大纲规范,重点考察顺时针单向递归与双状态递推。题目逻辑严密,模型典型,是深入理解与掌握信奥核心考点的经典范例。
B4579 [luogu-B4579 [GESP202609 四级] 新汉诺塔]
🔗 洛谷原题传送门:B4579
题目要求
题目描述
经典汉诺塔有 A、B、C 三根柱子,初始 A 上有从小到大排列的 个圆盘,目标是移到 C。 小杨添加了新规则:每一次移动,圆盘只能顺时针移动,即只能从 、 或 ;其它移动是不允许的。 在新规则下,给定圆盘数量 ,求将 个圆盘从 A 移动到 C 所需的最少移动步数。
输入格式
输入一个正整数 ,表示圆盘的数量。
输出格式
输出一个整数,表示最少移动步数。
输入输出样例
样例输入 #1
2
样例输出 #1
7
说明/提示
。对于 ,输出为 21。
题目分析与解题思路
- 双状态分治递推定义:
由于只能顺时针移动,移动 1 步与移动 2 步性质不同,需要引入互相依赖的双状态:
- 设 为将 个盘顺时针移动 1 根柱子(如 )的最少步数;
- 设 为将 个盘顺时针移动 2 根柱子(如 )的最少步数。
- 初始状态():
- 个盘 :直接移 步,故 ;
- 个盘 :必须经 ,共 步,故 。
- 状态转移关系:
- 求 ():
- 前 个盘 (顺移 2 步): 步;
- 第 个盘 (顺移 1 步): 步;
- 前 个盘 (顺移 2 步): 步。 即:。
- 求 ():
- 前 个盘 (顺移 2 步): 步;
- 第 个盘 (顺移 1 步): 步;
- 前 个盘 (顺移 1 步): 步;
- 第 个盘 (顺移 1 步): 步;
- 前 个盘 (顺移 2 步): 步。 即:。
- 求 ():
- 数据范围:, 结果在
long long范围内,时间复杂度 。
完整参考代码 (C++11)
/**
* Problem: luogu-B4579
* Standard: C++11 (CCF GESP 官方大纲规范)
* Author: OneCoder
*/
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
if (!(cin >> n) || n <= 0) {
return 0;
}
// f[i]: 顺时针跨 1 根柱子(A->B)
// g[i]: 顺时针跨 2 根柱子(A->C)
vector<long long> f(n + 1, 0);
vector<long long> g(n + 1, 0);
f[1] = 1;
g[1] = 2;
for (int i = 2; i <= n; ++i) {
f[i] = 2 * g[i - 1] + 1;
g[i] = 2 * g[i - 1] + f[i - 1] + 2;
}
cout << g[n] << "\n";
return 0;
}
考点归纳与备考建议
- 考纲匹配度:严格对标 CCF GESP 四级考纲重点,绝不超纲,注重基础算法与逻辑建模规范;
- 规范防范:所有代码严格以 C++11 标准编译运行,针对整数溢出、边界判断、空状态均做了详尽严整的防御性处理。
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
猜你想读 · 相关文章推荐
【二维数组与行列双重排序】GESP四级 / CSP-J 题解:luogu-B4580 [GESP202609 四级] 有序网格
CCF GESP 2026年9月认证(第十五次认证)C++ 四级试题,洛谷 B4580。本题严格遵循 CCF GESP 官方大纲规范,重点考察二维数组与行列双重排序。题目逻辑严密,模型典型,是深入理解与掌握信奥核心考点的经典范例。
【结构体与多关键字排序】GESP四级 / CSP-J 题解:luogu-P1093 [NOIP2007 普及组] 奖学金
NOIP 2007 普及组第一题,洛谷 P1093。本题是青少年信息学奥赛与编程等级考试中学习结构体(struct)与多关键字排序(Multi-key Sorting)的标志性入门经典试题,被标准收录于 CCF GESP 四级认证考纲(结构体与排序考点)及 CSP-J 普及组核心必做题单。题目重点考察结构体定义、数据复...
【GESP】C++ 四级真题解析,[2025年12月,第十二次认证]第二题优先购买
GESP C++ 2025年12月,四级真题第二题,考察结构体定义与自定义排序算法,涵盖贪心思想。题目难度⭐⭐★☆☆。
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com