内容正文:
在楚汉之争的过程中,韩信以其杰出的军事才能横扫魏、赵、代、燕、齐诸国,并数次以兵支援刘邦;
垓下之战,布五军阵诱敌,击破项羽军,最终迫使项羽于汉五年(前202年)自刎于乌江。
战后,韩信因功徙封楚王。
韩信
韩信以勇敢、智慧和谋略著称,他的一生留下了许多传奇故事,其中最知名的就是“韩信点兵”。
问题描述
一
西汉开国功臣、军事家,汉初三杰之一。
秦朝末年,楚汉相争。有一次韩信带领1500名将士与楚王大将李峰交战。苦战一场,楚军不敌,败退回营,汉军也死伤四五百人。
于是韩信整顿兵马返回大本营,当行至一山坡,忽有后军来报,说有楚军骑兵追来。只见远方尘土飞扬,杀身震天,汉军本来已十分疲惫,这时队伍喧哗一片,韩信兵马到坡顶,见来敌不足五百骑,便急速点兵迎敌。
韩信点兵
他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;又命令士兵7人一排,结果又多出2名。韩信马上向将士们宣布:“我军有1073名勇士,敌人不足500,我们居高临下,以众击寡,一定能打败敌人。” 汉军本来就信服自己的统帅,这一来更相信韩信是“神机妙算” ,于是士气大震,一时间旌旗摇动,鼓声喧天。汉军步步紧逼,楚军乱作一团,交战不久,楚军大败而逃。
问题描述
一
韩信点兵
”韩信点兵“故事
是一个有趣的猜数游戏。
问题描述
一
如何来解决这个问题呢?
01
问题
描述
02
抽象与建模
03
设计
算法
04
验证与优化算法
韩信点兵
抓住问题的关键要素,忽略与问题求解无关的要素。
抽象与建模
二
秦朝末年,楚汉相争。有一次韩信带领1500名将士与楚王大将李峰交战。苦战一场,楚军不敌,败退回营,汉军也死伤四五百人。
于是韩信整顿兵马返回大本营,当行至一山坡,忽有后军来报,说有楚军骑兵追来。只见远方尘土飞扬,杀身震天,汉军本来已十分疲惫,这时队伍喧哗一片,韩信兵马到坡顶,见来敌不足五百骑,便急速点兵迎敌。
他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;又命令士兵7人一排,结果又多出2名。韩信马上向将士们宣布:“我军有1073名勇士,敌人不足500,我们居高临下,以众击寡,一定能打败敌人。” 汉军本来就信服自己的统帅,这一来更相信韩信是“神机妙算” ,于是士气大震,一时间旌旗摇动,鼓声喧天。汉军步步紧逼,楚军乱作一团,交战不久,楚军大败而逃。
1500名将士
死伤四五百人
3人一排
5人一排
7人一排
多出2名
多出2名
多出3名
已知条件
求解目标
数量关系
抽象与建模
二
1500名将士
死伤四五百人
3人一排,多出2人
5人一排,多出3人
7人一排,多出2人
求剩余士兵的数量?
剩余士兵数量的范围?
1000-1100
韩信点兵的数量关系可以表示为数的除法运算。
抽象与建模
二
÷ 3 =
……
2
3人一排,结果多出2名;
表示什么?
剩余的士兵总数
3人一排
多出的2名
一共排了多少排
韩信点兵的过程可以表示为数的除法运算。
抽象与建模
二
÷ 3 =
……
2
3人一排,结果多出2名;
5人一排,结果多出3名;
÷ 5 =
……
3
7人一排,结果多出2名;
÷ 7 =
……
3
抽象与建模
二
指的是剩余的士兵总数
这就是我们要求的量,可以将其设为变量x。
x÷3= ……2
x÷5= ……3
x÷7= ……2
x的取值范围?
1000-1100
抽象与建模
二
x÷3= ……2
x÷5= ……3
x÷7= ……2
x的取值范围:1000~1100
1000<=x<=1100
抽象与建模
二
x÷3= ……2
x÷5= ……3
x÷7= ……2
(1000<=x<=1100)
▲“韩信点兵”计算模型
算法设计
三
x的值 满足条件 是否满足条件
1000
1100
判断
“除以3余数为2,除以5余数为3,除以7余数为2”
三个条件同时满足?
判断的条件
×
1001
×
1002
×
……
……
1073
√
……
……
1099
×
×
x+1
算法设计
三
关键
正确解的判断条件
确定枚举的范围
1000<=x<=1100
“除以3余数为2,除以5余数为3,除以7余数为2”
三个条件同时满足?
任务一:完善流程图
请你操作鼠标拖动下方的5个流程图按钮,完善“韩信点兵”枚举法流程图算法。
否
是
开始
结束
输出x的值
x÷3余2,且x÷5余3,且x÷7余2?
( )
( )
算法设计
三
请你操作鼠标拖动下方的5个流程图按钮,完善“韩信点兵”枚举法流程图算法。
在枚举范围内吗?
X要有一个初始值
判断是否满足条件?
否
是
开始
结束
输出x的值
x÷3余2,且x÷5余3,且x÷7余2?
( )
( )
算法的程序实现
四
x÷3余2,x÷5余3,x÷7余2 三个条件
同时满足?
x÷3余2
取余:求余数的运算符为“%”
表达式 x%y 的功能是:“用x除以y,取它的余数”
如:5%2 的结果是 1;
5÷2=2 …… 1
1是5÷2的余数
8%5=
8÷5=1…… 3
3是8÷5的余数
?
3
10%5=
?
10÷5=2…… 0
0
x%3==2
x%5==3
x%7==2
同时满足?
算法的程序实现
四
x÷3余2,x÷5余3,x÷7余2 三个条件
同时满足?
要判断多个条件同时满足,需要用“and”逻辑运算符
x%3==2
x%5==3
x%7==2
同时满足?
and
and
x%3==2 and x%5==3 and x%7==2
算法的程序实现
四
▲“韩信点兵”枚举法流程图
将1000赋值给变量x
当x<=1100的时候
如果x÷3余2,x÷5余3,x÷7余2 三个条件同时满足
循环体
缩进
任务二:完善程序
对照左边的流程图,请你拖动方框中的代码到Python语言编写的程序中缺失的地方,将代码补充完整补充完整。
执教者:
浙江省教育厅教研室 组织编写
2023浙江教育出版社版 ∙ 小学信息科技
任务三:编写程序
假如“韩信点兵”的问题描述修改为:韩信带领1500名士兵去打仗,战后死伤一二百人。剩下士兵中,他命令士兵3人一排,结果多出1人;5人一排,结果多出4人;7人一排,结果多出3人。问剩下的士兵一共多少人?
▲有困难的同学选“枚举法1” 来完成
▲有能力的同学选“枚举法2” 来完成
枚举法
1.枚举法的思想是 地尝试 的解。
2.枚举法的关键是① 。
② 。
有序
每一种可能
确定枚举的范围
正确解的判断条件
“韩信点兵”枚举法
确定枚举的范围
正确解的判断条件
1000<=x<=1100
x%3==2 and x%5==3 and x%7==2
$$