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:外星密码 题解 嵌套结构解析:利用递归调用栈处理括号内的嵌套解压。

完成后复盘一题:指出状态变量在哪一行修改、在哪一行恢复,以及删掉恢复语句会导致什么错误。