内容正文:
高一—教科版—信息技术—第四单元
算法——枚举法(第二课时)
【知识回顾】
算法的概念:解决问题的方法与步骤;
算法的特征:有穷性、确切性、输入项、输出项、可行性。
【学习目标】
1.通过学习枚举法算法,加深对算法及算法的特征的理解;
2.理解枚举法的含义及特点,归纳枚举法的思维方式;
3.掌握枚举算法的一般流程,学会编写简单的程序实现枚举法。
1 . 问题情景
谁是冠军?
在一场精彩的赛车比赛中,冠军是A、B、
C、D中的一位。
A说:“不是我。”B说:“是C。”C
说:“是D。”D说:“C说的不对。”
已知四个人中,有一个人说了假话,你能判断到底谁是冠军吗?
谁是冠军?
分析问题
思路:在不知道谁说真话、谁说假话的情况下,最
简单的方法就是把所有可能都列举出来,分别假设A、
B、C、D是冠军,然后对四个人的话进行真假判断。满足条件:说真话的人数为3人。
谁是冠军?
请同学们拿出纸张和笔,补充完善以下表格。
冠军 A说:“不是我。 ” B说:“是C。” C说:“是D。 ” D说“C说的不对。” 说真话人数
A × × × √ 1
B √ × × √ 2
C √ √ × √ 3
D √ × √ × 2
谁是冠军?
自然语言描述算法
1.假设冠军人员
2.判断说真话人数
3.如果说真话的人数为3人,输出冠军编号
4.重复以上步骤,直到A、B、C、D都假设完成
谁是冠军
流程图描述算法
开始
cond==3
cond=说真话的人数
i取下一个值
结束
否
否
是
输出编号i
i是否在A、B、C、
D情况下取值
是
定义变量i,
cond=0
如何将文字语言转换成计算机能解够执行的表达式呢?
如A说“不是我。”
可以表示为i!=‘A’,其中i为枚举冠军选手变量
想一想
谁是冠军?
谁是冠军?
champion=['A','B','C', 'D'] for i in champion:
cond=(i!='A')+(i=='C')+(i=='D')+(i!='D')
if cond==3:
print(“冠军是:”,i)
“ 研读” 下面的程序, 在横线上补充完注释
# 如果说真话人是3位
# 输出冠军编号
#设置选手列表
# 枚举每一个选手是冠军
# cond用来记录说真话的人数
什么是枚举法?
枚举法(穷举法):把所有可能情况一一列举,符合条件就保留,不