C++ 竞赛入门
题目练习
递归单元练习
每道题先写出三个句子:函数参数表示什么,边界是什么,每次调用怎样让问题变小。使用小数据画出调用树,确认不会漏分支或无限递归后再提交。
| 难度 | 题目 | 题解 | 训练目标 |
|---|---|---|---|
| 基础 | 洛谷 P1427:小鱼的数字游戏 | 题解 | 逆序输出:利用递归的系统调用栈,在递归返回时输出以实现逆序。 |
| 基础 | 洛谷 P5727:冰雹猜想 | 题解 | 逆序输出:用递归记录序列的生成路径,利用回溯阶段依次输出。 |
| 基础 | 洛谷 P5739:计算阶乘 | 题解 | 有返回值的递归:把 n! 写成对 (n-1)! 的调用。 |
| 基础 | 洛谷 P5743:猴子吃桃 | 题解 | 简单递推:用递归函数自底向上计算结果,递归关系为 f(d) = (f(d+1)+1)*2。 |
| 基础 | 洛谷 P2386:放苹果 | - | 分步分类讨论:经典划分数问题,通过减少苹果数或盘子数缩小规模。 |
| 基础 | 洛谷 P1036:选数 | 题解 | 组合枚举和递归边界。 |
| 基础 | 洛谷 P1157:组合的输出 | 题解 | 固定长度选择。 |
| 巩固 | 洛谷 P1706:全排列问题 | 题解 | used 状态和回溯恢复。 |
| 巩固 | 洛谷 P1025:数的划分 | 题解 | 限制条件递归:将整数拆分为固定份数,利用单调性去重并剪枝以降低复杂度。 |
| 巩固 | 洛谷 P1044:栈 | 题解 | 状态递归模拟:通过递归模拟入栈和出栈操作,在边界处统计合法序列数量。 |
| 巩固 | 洛谷 P1605:迷宫 | 题解 | 网格 DFS、访问标记与回溯恢复;先处理格子访问,再走向下一格。 |
| 巩固 | 洛谷 P5461:赦免战俘 | 题解 | 分治递归:通过递归将二维区域等分成四个子区域并填充。 |
| 巩固 | 洛谷 P3612:Secret Cow Code S | 题解 | 自底向上/自顶向下规约:折半缩小问题规模,递归定位字符位置。 |
| 挑战 | 洛谷 P1219:八皇后 | 题解 | 在排列枚举上增加合法性判断与剪枝。 |
| 挑战 | 洛谷 P1928:外星密码 | 题解 | 嵌套结构解析:利用递归调用栈处理括号内的嵌套解压。 |
完成后复盘一题:指出状态变量在哪一行修改、在哪一行恢复,以及删掉恢复语句会导致什么错误。