单元七 · 了解更多的算法
第24课 多人过河巧安排

一、学习目标
- 尝试把一个大问题分解成小问题来解决,培养解决问题的能力。
- 通过发现解决小问题的方案来解决大问题,初步了解规划算法的思想。
二、情境导入
一支由 10 个成年人组成的探险队要过河,但河宽水深,没法游过去,附近也没有桥。这时,他们看到 2 个少年划着 1 条小船过来,就请求帮助。但这条船太小,每次只能承载 1 个成年人或者 2 个少年。如果 2 个少年与探险队成员都能单独划船过河,这支探险队如何过河?
三、核心讲解
本课学习路径:
1规划探险队过河的方法
2用流程图描述过河的过程
1.规划探险队过河的方法
已知条件:
- 10 个成年人要过到河对岸。
- 有两个少年利用一条小船帮助他们。
- 船上只能有一个成年人、一个少年或两个少年。
- 成年人和少年都能单独划船。
任务目标:在两个少年的帮助下,10 个成年人全部过河到对岸。
解决关键:明确过河过程中两个少年的位置;理清一个成年人过河的过程,其他人按照相同方法过河。隐含条件:10 个成年人可以一个一个地过河。
分析一个成年人过河的步骤:
- 两个少年划船到对岸(B B →)。
- 一个少年划船回来(B ←)。
- 一个成年人划船到对岸(A →)。
- 另一个少年划船回来(B ←),准备送下一位成年人。
一个成年人过河后,可以用重复多次的方法解决整个问题,每个成年人用相同的方法过河。
想一想:如果是 20 个成年人过河或者更多人过河,如何修改算法?
2.用流程图描述过河的过程
流程图:探险队过河(循环运送)
只需把一个成年人过河的步骤循环 10 次,就可以把探险队员都送到对岸,两个少年也可以划船离开了。
规划思想:把大问题分解成小问题。小问题和大问题的性质是一样的——本任务中送 10 个成年人过河,可分解为送一个成年人过河,每个人的过河方式相同。引导问题朝着规划好的小问题方向发展,就能用解决一个小问题的方式解决整个大问题。
本课无新基础语法;过河策略见流程图。列表与 for 已学过。
弄清以上要点后,再进入下方 Python Online,按步骤输出过河策略。
四、动手体验 · Python 3 Online 编程
五年级 · 过河:按步骤输出策略。
正在载入 Python 3 Online
正在载入编程环境…
五、课堂总结
- 探险队过河问题是把 10 个人过河问题分解为 1 个人过河问题。
- 要解决问题就要学会将大问题分解为小问题;根据问题需求,小问题也可以再继续分解,当问题分解到足够小时,解决起来就容易多了。
- 在问题分解过程中,发现解决问题的规律后,依据规律,可以利用循环结构来解决重复操作的问题。
六、拓展提升
- 有一位猎人带着一只羊、一头狼和一筐白菜过河。河边有一条小船,但船太小,每次猎人只能载狼、羊和白菜三者中的一个过河。猎人不在旁边时,狼会吃羊,羊会吃白菜。请问猎人怎样才能把狼、羊、白菜都安全运过河?
测评
选出后点「检查」。答错会显示简短说明。
探险队过河问题体现了什么算法思想?
10 个成年人都用「一个成年人过河」的相同方法,程序中常用什么结构实现?
本课过河问题中,小船的载重限制是?
本节小结
探险队过河把「10 人过河」分解为「1 人过河」的重复;规划思想是抓住小问题与大问题性质相同,再用循环完成重复操作。