内容正文:
五上U3 生活中常见的算法思想
X老师
3-1奖品购买中的枚举
3-1奖品购买中的枚举
3-2棋盘覆盖中的分治
3-3棋子移动中的递推
3-4信息安全中的加密
目
录
CONTENTS
01
什么是枚举法
枚举法在程序中的验证执行
02
任务驱动
在迎新年活动中,学校打算为同学们准备奖品。小智在购买奖品时,巧妙运用了经典的算法思想。
讨论:谈一谈他是如何做的?
Part One
01
什么是枚举法
奖品采购
奖品采购任务要求:
用100元恰好购买100支笔,这些笔需包含钢笔、圆珠笔和铅笔。
已知钢笔5元/支、圆珠笔3元/支、铅笔0.5元/支
思考并讨论:应如何完成任务?
提示: 可以从1支钢笔开始,把所有三种笔的数量正好为100支的情况都试试
“购买奖品”互动体验
手动模式:
输入任意符合的数值,尝试是否可行
打开“购买奖品问题”模拟互动程序
“购买奖品”互动体验
枚举模式:
自动计算所有可能性
在解决问题时,将所有可能的情况一一列举,并对每种情况分别进行检验,直到找出答案。
枚举法(穷举法)
它是一种基础的算法思想。
一般来说,枚举算法适用于解决任何有解的问题。
最终所有可行情况
“购买奖品”互动体验
提高枚举效率的方法
有什么方法可以提高效率呢?
将可能的情况一一列举出来,虽然能解决问题,但是这种方法效率较低。
在列举组合方案时,一旦笔的总价超过100元,后续情况就不需要再列举了。
例如,当所购钢笔数量达到20支时,钢笔的总价就已经达到100元了,因此不需要再列举21支或更多钢笔的情况了。
添加一些限制条件,减少无关的枚举次数,提高解决效率。
Part Two
02
枚举法在程序中的验证执行
图形化编程
购买奖品
运行“购买奖品”程序,快速找到问题的答案,并验证结果是否正确。
在程序中,通常使用变量存储数据。
变量在使用前,需要新建并命名。
变量名称应符合顾名思义的原则。
我的玩具
图形化编程
变量
(各种玩具)
变量名称
(“我的玩具”这四个字)
变量 = 一个有名字的魔法盒子,里面装的东西可以随时改变,但名字不变。
变量
可以变
不能变
图形化编程
购买奖品 模拟互动程序VS图形化编程程序
图形化编程运行结果
模拟互动程序运行结果
未加入限制条件,枚举次数庞大,用时长
加入限制条件,枚举次数减少,用时短,效率高
结论:都相同
图形化编程
购买奖品 优化程序
举一反三:
钢笔5元1支,100元最多可以买20支
圆珠笔3元1支,100元最多可以买33支
可以优化吗?
20
33
图形化编程
韩信点兵
背景故事:
传说,有一次韩信带领1500名将士与楚军交战。虽楚军败退,但汉军也损失了四五百人。在韩信整顿兵马回营的路上,楚军骑兵追来。韩信立即率兵来到坡顶,先到高处查看敌情,预估敌方人数,再急速点兵迎敌。他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;他又命令士兵7人一排,结果又多出2名。通过这些排列组合后获得的信息,韩信迅速计算出汉军的确切人数。汉军见自己的统帅如此神机妙算,士气大振,一鼓作气击溃了楚军!
韩信点兵的故事虽来源于民间传说,但其中蕴含的数学原理和文化内涵却极具意义和价值。通过这个故事,我们不仅可以感受古人的智慧和才能,也可以更好地理解算法在解决实际问题中的应用和魅力。
图形化编程
韩信点兵
算法流程图
排列方式 计算描述 图形化编程表示
士兵3人一排,多出2名 士兵人数除以3余2
士兵5人一排,多出3名
士兵7人一排,多出2名
补充完整
士兵人数除以5余3
士兵人数除以7余2
图形化编程
韩信点兵
补充完整
当有多个条件需要同时判断时,我们可以借助“与”逻辑表达式积木 并且进行合并。
“与”逻辑表达式
图形化编程
条件1 条件2 <条件1>并且<条件2>
成立 成立 成立
成立 不成立 不成立
不成立 成立 不成立
不成立 不成立 不成立
当左右两个条件都成立时,则返回值为“成立”,
否则返回值为“不成立”。
“或”逻辑表达式
图形化编程
条件1 条件2 <条件1>或<条件2>
成立 成立 成立
成立 不成立 成立
不成立 成立 成立
不成立 不成立 不成立
当左右两个条件中任意一个条件成立时,则返回值为“成立”,
否则返回值为“不成立”。
X老师
希望本节课有所收获
五上U3 生活中常见的算法思想
$