乐于分享
好东西不私藏

2024年入门级第一轮C++软件能力认证:程序完善6-10题

2024年入门级第一轮C++软件能力认证:程序完善6-10题

CSP - J 2024

一、

程序完善

第六题:

第七题:

第八题:

第九题:

第十题:

二、

参考答案

第六题答案:B

第七题答案:B

第八题答案:B

第九题答案:B

第十题答案:C

汉诺塔直观示意图

* src  :起始柱(圆盘一开始所在的柱子) * tmp  : 辅助柱子(用来临时存放圆盘) * tgt  : 目标柱子(圆盘最终要去的柱子)

三、核心逻辑讲解

汉诺塔问题的本质是分治思想:把 “移动 n 个圆盘” 这个大问题,拆成 3 个小问题来解决:

  1. 把上面的 n-1 个圆盘,先移到辅助柱子

这一步相当于把 “n-1 个圆盘从 A 移到 B” 的子问题,交给递归自己解决。此时目标柱子 C 变成了临时辅助柱,所以调用 dfs(i-1, src, tgt, tmp)。

2.把最底下的最大圆盘,直接移到目标柱子

这一步很简单,因为上面的圆盘都已经移走了,最大的圆盘可以直接从 A 挪到 C,不会违反规则。

3.把 n-1 个圆盘,从辅助柱子移到目标柱子

这一步是把 “n-1 个圆盘从 B 移到 C” 的子问题,交给递归自己解决。此时原来的源柱子 A 变成了临时辅助柱,所以调用dfs(i-1, tmp, src, tgt)。

完整程序

商业合作

1.定制版教具、竞赛版教具。

2.國際機器人教育發展協會师资培训

3.开展青少年机器人等级评测授权服务

4.四个教学点,任意选择