内容正文:
枚举算法及其程序实现
一、知识点
1.枚举算法的基本是根据问题的本身性质,一一列举该问题所有可能的情况,并根据题目的条件逐个作出判断,从中挑选出符合条件的解。
2.设计枚举算法时要尽量少枚举的未知量,如某个未知量能从其他已列举的未知量中推算得到的,就不要枚举。
3.枚举某个变量时,必须在有限范围内进行枚举。
4.枚举算法在程序实现时,要明确下列三要素:
(1)循环(用于枚举可能的解)
(2)条件判断(挑符合条件的解)
(3)求解形式(输出解的内容或统计解的个数)
5.常见的程序结构是循环结构包含分支结构(实现对枚举出的解进行判断与筛选)
二、课堂训练
例1:班主任黄老师在期末时使用班费为班级学生购买了一批水笔。下图是购买这批笔时的收款收据。现在要班级公布班费使用情况,在存放时不小心有2滴黑水滴在了收据上,使得部分数据无法识别。由于当时没有标注两种笔的数量,导致无法计算出总金额。黄老师只记得总金额是21的倍数。请你帮助黄老师,算出总金额及2种笔可能购买的数量。
(1)计算总金额
for i in range(0,10):
m=
if :
print(m)
运行结果:
(2)计算各种笔的数量
for i in range(1,86):
for j in range(1, ):
if :
print('大号水笔'+str(i)+'支,小号水笔'+str(j)+’支’)
for i in range(1,86):
yq=1281-15*i
if :
print('大号水笔'+str( )+'支,小号水笔'+str(j)+’支’)
运行结果:
例2:鸡兔同笼:大约在1500年前,《孙子算经》中就记载了这个有趣的问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
这四句话的意思是:有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?
方案(1)
方案(2)一重循环
jia=35*2
dyj=94-jia
tu=
ji=