枚举算法 举例ppt课件
Y
输出X
20
练一练
用10元和50元两种纸币组成240元, 共有几种组合方式?试用枚举算法列 出所有不同的取法。
21
Start x←1
N Y y←1
N
Y N
10x+50y=240
Y 输出x,y
练一练 End
用10元和50元两种 纸币组成240元,共 有几种组合方式?试 用枚举算法列出所有 不同的取法。
····· ·
10.拿出第十把钥匙, 试验第十把钥匙能否开门。
枚举法
列举
检验
3
枚举算法就是按照问题本身的性质,一一列举
出该问题所有可能的解,并根据问题的条件对各
解进行逐个检验,从中挑选出符合条件的解,舍
弃不符合条件的解。
4
数7游戏
在联欢会上,小明提议大家来玩数7的游戏。
游戏规则:从1开始数起,每个人数一个数,
凡是遇到7的倍数就要喊“过”, 这样一直数到100为止。
帮小明找出1——100所有要喊“过”的数
5
数7游戏
用变量i表示要列举的自然数。
列举
列举范围:1——100
检验
检验条件:i能否被7整除。
在列举过程中要既不遗漏,又不重复。
6
数7游戏
用变量i表示要列举的自然数。
列举范围:1——100 检验条件:i能否被7整除。
结束
i=1 Do while i<=100
if i mod 7=0 then print i
end if i=i+1 loop
9
枚举算法的设计步骤
• 确定列举范围 • 明确检验条件 • 确定循环控制方式和列举方式
枚举算法只适用于可能解的个数不太多的情况。
10
一张单据上有一个5位数的编号,万位数是1,千位 数是4,百位数是7,个位数是8,十位数已经模糊不清 ,只知道该5位数是7或11的倍数,找出所有满足这些条 件的5位数并输出。
NO. 147 ? 8
用变量i表示十位上的数;变量n表示这个5位数。
列举范围:0——9 检验条件:n能被5或者11整除。
即:(n mod 7=0) or (n mod 11=0)
11
开始
i=0
i<10
N
Y
n=14708+i*10
N
(n mod 7=0) or (n mod 11=0)
Y 输出n
i=i+1
22
结束
程序代码:
i=0 Do while i<10
n=14708+i*10 if n mod 7=0 or n mod 11=0 then
Print n end if i=i+1 Loop
12
生活中的枚举算法实例
• 找钥匙 • 警察审案 • 挑烂苹果
13
1.枚举算法的概念 2.枚举算法的结构特征 3.枚举算法的设计步骤 4.枚举算法的应用
i<=1000
F
T
i mod 3=0
F
T 检验 输出 i
检验:
i mod 3=0
F
T
输出 i
i=i+1
结束
19
练习
找出所有[100,1000]之间 35的倍数的数字。
范围: 100 1000
初 值:100 终 值:1000 步 长:1
条件:
x mod 35 = 0
Start
x←100
N
Y
N
End
1
小明是一个数学迷,昨天他约了几个同学 一起到会议室里举行一个联谊会,可是粗心的 小明去总务处拿了一串钥匙回来准备开门时, 却忘记了到底哪一把才是会议室的钥匙。假设 这串钥匙一共有10把。
怎样才能找到正确的钥匙来开门
2
找钥匙的过程
1.拿出第一把钥匙, 试验第一把钥匙能否开门; 2.拿出第二把钥匙, 试验第二把钥匙能否开门; 3.拿出第三把钥匙, 试验第三把钥匙能否开门;
14
一张单据上有一个5位数的编号,千位数是1,百位 数是7,个位数是8,万位数和十位数已经模糊不清,只 知道该5位数是7或11的倍数,找出所有满足这些条件的 5位数并输出。
NO. ? 17 ? 8
该题要列举的对象有两个,分别是万位数和 个位数。用循环的嵌套。
15
出1-1000中所有能被7和11整除的数。 c 开始
i=1
i<=1000
F
T
i mod 3=0
F
T 输出 i
i mod 7=0 and i mod 11=0
i mod 77=0
i=i+1
结束
16
鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱 一,百钱买百鸡,问翁、母、雏各几何?
鸡翁 鸡母 鸡雏
一一列举: a 初值: 0 终值: 20
递增值: 1
b
c
0
开始
i=1
i<=100 N Y N
i mod 7=0 Y
输出i
i=i+1
结束
7
数7游戏
开始
i=1 i<=100 N
Y i mod 7=0 N
Y 输出i
i=i+1
结束
(循环结构) (分支结构)
循 环 中 嵌 套 分 支
8
数7游戏
开始
i=1 i<=100 N
Y i mod 7=0 N
Y 输出i
i=i+1
0
33
10013源自检验:a*5+b*3+c/3=100
17
开始
a=0
a<=20
F
T b=0
b<=33
F
T
c=0
c<=100
F
T
a*5+b*3+c/3=100
F
T
输出 a、b、c
c=c+3
b=b+1
a=a+1
结束
18
求1-1000中,能被3整除的数
开始
枚举时注意:
i=1
不遗漏,不重复,
且可能的解有限。