收藏 分享(赏)

第二章 算法实例(枚举算法).pptx

上传人:HR专家 文档编号:8058652 上传时间:2019-06-07 格式:PPTX 页数:32 大小:352.01KB
下载 相关 举报
第二章 算法实例(枚举算法).pptx_第1页
第1页 / 共32页
第二章 算法实例(枚举算法).pptx_第2页
第2页 / 共32页
第二章 算法实例(枚举算法).pptx_第3页
第3页 / 共32页
第二章 算法实例(枚举算法).pptx_第4页
第4页 / 共32页
第二章 算法实例(枚举算法).pptx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、第二章 算法实例,2.1枚举算法,一、作业回顾,表扬:张娴雯 孙莹、黄豪炳,4、称盐问题,1、左边放1、1、2、5法码,共9克 2、右边放9克食盐 3、拿掉法码,将食盐平分,即得,5、判断构成三解形,开始,输入三边a,b,c,1,1,a+b=c,a+c=b,b+c=a,输出可构成三角形,输出不能构成三角形,结束,Y,Y,Y,N,N,N,第6题:,开始,初始变量c1,c2,sum1,sum2为0,输入一个数据到变量n,n=0?,正数sum1=sum1+n,c1=c1+1,输出正数sum1/c1和负数sum2/c2,结束,N0?,负数sum2=sum2+n,c2=c2+1,Y,N,Y,N,想一想:

2、,一天早上,数学课代表收好了数学练习本,他的同桌物理课代表收好了物理练习本,但是由于一些意外,两种练习本混在了一起。现在要把混在一起的74本练习本区分开,假如你是数学课代表,你会怎么做? 请讲出你的解决方案。,列举,检验,C=C+1,C=1,N,试一试:,请用自己的话试着总结什么是枚举法。,这种列举出所有可能的情况并逐一进行检验,根据检验的结果执行相应操作的方法就是枚举法。,枚举法的基本思想:是根据提出的问题枚举所有可能状态,并用问题给定的条件检验哪些是符合条件的,哪些是不符合条件的,去掉。能使命题成立,即为其解。 其实质是一一列举所有可能,过滤掉不合要求,保留符合要求。 枚举法的优点: 由于

3、枚举算法一般是现实生活中问题的“直译”,因此比较直观,易于理解; 由于枚举算法建立在考察大量状态、甚至是穷举所有状态的基础上,所以算法的正确性比较容易证明。 枚举法的缺点:枚举算法的效率取决于枚举状态的数量以及单个状态枚举的代价,因此效率比较低。,练一练:,学校体育馆买进100个篮球,只有“斯伯丁”和“摩腾”两个牌子,为运输方便将它们混在了一起运来。请你设计一个算法,帮助器材保管员统计共有多少个“斯伯丁”篮球。要求:请将你解决问题的流程图绘制出来。,开始,J=100,C=0,J=1,Y,N,N,输出C,结束,拿出一个篮球,列举,检验,J=J+1,研究范围,枚举法的结构特点: 逐一列举和检验,用

4、循环结构实现。关键步骤:确定范围、列举、检验。检验就是对某个给定的条件进行判 断,根据判断的不同结果执行不同操作,所以检验可用分支结构实现。,若一个三位数X=100a+10b+c(a、b、c都是个位数),满足a3+b3+c3=X,则X称为水仙花数,请设计算法,找出所有的水仙花数。,列举,检验,研究范围,100 = X = 999,分别得到三位数的百位a、十位b、个位c,a3+b3+c3=X,开始,结束,X=100,X=999,分别得到三位 数的百位a、 十位b、个位c,a3+b3+c3=X,输出X,X=X+1,a=int(X/100) c=X % 10 b=(X-100*a-c)/10,Y,Y

5、,N,N,枚举法的注意点:1、选定合适的研究对象的范围。2、找到判断正确解的条件,列举。3、逐一检验范围内的所有研究对象。,例1:涂抹数字,一张单据上有一个5位数的编码,其千位数和百位数已经变得模糊不请。但是知道这个5位数是57或67的倍数。现在要设计一个算法,输出所有满足这些条件的5位数,并统计这样的数的个数。,No.1 47,分析:,范围:首先,千位数和百位数 可以填上00,01,02,97,98,99;得到10047,10147,19947。建一个循环变量为j,从0到99的一个循环,每一个可能解n的值为10047+j*100 列举:其次,对每一个n判断是否能被57或67整除。若是,输出一

6、组解,解的个数+1;若不是,舍弃 检验:n mod 57=0 or n mod 67=0 (其他判断方法),算法描述 1、计数器c0 2、j0 3、判断j100,是转4,否转向 9 4、可能解 n10047+100*j 5、判断n是否57或67的倍数,是转向6;否转向8 6、计数器cc+1; 7、输出真正的解n 8、jj+1;转向 3 9、输出解的个数 C 10、结束,上虞区小越中学信息技术组,编写程序,深化思考题: 一张单据上有一个5位数的编码,其千位数和十位数已经变得模糊不请。但是知道这个5位数是57或67的倍数。现在要设计一个算法,输出所有满足这些条件的5位数,并统计它们的个数。,No.

7、1 4 7,例2 百鸡百钱问题,“鸡翁一值钱5,鸡母一值钱3,鸡雏三值钱1”现有100钱,欲买100只鸡,问:鸡翁、鸡母、鸡雏各买几只?,分析: 设x,y,z分别为买的鸡翁、鸡母、鸡雏的个数 则:x+y+z=1005*x+3*y+z/3=100 可能的解 X: 0-20 Y: 0-33 Z: 100-x-y,范围:鸡翁X: 0-20,鸡母Y: 0-33鸡雏Z: 100-x-y,列举: 建立一个双重循环, 可能的解如下:,检验可能的解是否真正的解,判断:5*x+3*y+z/3=100 若是,x,y,z就是一个真正的解,z 100-x-y,输出x,y,z,5*x+3*y+z/3=100,N,Y,包

8、装问题:,600个变形金刚,包装的规格为:大盒(8个)、小盒(3个);每种规格的盒都不能为空。请设计一个算法,输出所有可能的包装方案。,分析: 设大小盒的个数分别为x,y 则:8*x+3*y=600 X:1-74 Y:1-200,范围:X:1-74Y:1-200 问X为什么到74,Y到200,算法提示,列举:构造一个双重循环,循环变量分别为x(大盒数量)和y(小盒数量)。 检验:判断:8*x+3*y=600是否成立; 若是,则x,y就是一个包装方案。,流程图,x*8+y*3=600?,输出x,y值,假如要求: 1、大盒是偶数的呢? 2、大盒数量要超过小盒的数量 ,600个变形金刚,包装的规格为

9、:大盒(8个)、中盒(5个)、小盒(2个);每种规格的盒都不能为空。请设计一个算法,输出所有可能的包装方案。,深化思考题,思考题:,如果你是体育委员,假设为了教学的需要,要对总共60个篮球进行分组。要求如下:1、A类组每组有4个球,B类组每组有6个球;2、A类组和B类组的数量都不能为0。请设计一个算法,输出所有可能的分组方案。,P25 1、2、3题,作业:,分析:,千位数和十位数上的数字只能是0-9中的一个。,i,j,i,j,i 从0变化到9;j从0变化到9。因此,需要构造一个双重循环。 可能的解 n 10407+1000*i+10*j,双重循环的构造,1、i 0 2、判断i=9;是转向3,否

10、则转向7 3、j 0 4、判断j=9;是转向5,否则转向6 5、j j+1; 转向4 6、i i+1;转向2 7、结束,思考: 右面的流程图有没有问题,算法描述,1、c 0;i 0 2、判断i=9;是转向 3,否则转向 11 3、j 0 4、判断j=9;是转向 5,否则转向 10 5、n 10407+1000*i+10*j 6、判断n是否57或67的倍数,是转向 7;否转向 9 7、计数器 c c+1; 8、输出一个真正的解 n 9、j j+1;转向 4 10、i i+1;转向 2 11、输出解的个数 c 12、结束,包装问题:600个变形金刚,包装的规格为:大盒(8个)、中盒(5个)、小盒(2个);每种规格的盒都不能为空。请设计一个算法,输出所有可能的包装方案。,分析: 设大中小盒的个数分别为x,y,z 则:8*x+5*y+2*z=600 X:1-74 Y:1-118 Z:(600-8*x-5*y)/2,算法提示,构造一个双重循环,循环变量分别为x(大盒数量)和y(中盒数量)。 判断:Z=(600-8*x-5*y)/2是否是整数; 若是,则x,y,z就是一个包装方案。,关于三重循环,X: 1-74 Y: 1-118 Z: 1-293,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报