1、张丽丽2019.6.27及其程序实现枚 举 算 法“断舍离”“断舍离”是新近的一种生活方式,假如你要对衣柜中100件衣服进行断舍离,将穿不着的衣服挑出捐赠,你会怎么做?什么是枚举算法1按问题本身的性质,一一列举该问题的所有可能解,并在逐一列举的过程中,对全部可能结果逐一进行判断,过滤掉那些不符合要求的,保留符合要求的结果。 采用枚举算法解题的基本思路:(1)确定枚举对象、枚举范围和判定条件;(2)一一枚举,逐一验证枚举算法的基本思路1算法结构?实现要素?从第1件衣服开始试穿一下在100件衣服以内吗 i=100是否小了下一件挑出外循环逐一枚举内分支判断枚举算法的程序结构(模型)1For i=初值
2、To终值Step步长值If 表达式成立 then 相应处理EndIfNext i i=初始值DO while 条件If 表达式成立 then 相应处理EndIf i=i+步长Loop最后的输出形式:符合条件的数据输出; 对符合条件的数据进行计数输出。1一起来帮忙老师老师最近研究了彩票的规律,发现一个最近研究了彩票的规律,发现一个彩票号彩票号:256很有机会中奖,另有位很有机会中奖,另有位朋友透露:朋友透露:这个这个5位数彩票号位数彩票号可以可以被被37或者或者67整除整除,请大家帮忙算算,我应该买哪几张号,请大家帮忙算算,我应该买哪几张号码的彩票,就有可能中码的彩票,就有可能中大奖大奖小试牛刀
3、:分析问题2枚举对象枚举对象是:是:枚举范围枚举范围是:是:判定条件判定条件是:是:5位数彩票号:位数彩票号: 256空缺的两位可以是:空缺的两位可以是:00,01,02,98,99能能被被37或者或者67整除整除小试牛刀:画出流程图2 输出nDim i As Integer, n As Integer, sum As Integernum=0For i= to n=25006+i*10 If then List1.additem End ifNext ilabel1.caption= 共有+ +个数枚举算法的优化3S=0For i=1 to 100If i mod 2=0 then s=s+
4、iNext iText1.Text=str(s)S=0For i=2 to 100 step 2s=s+iNext iText1.Text=str(s)1.阅读以下两个程序,找一找其共同点和不同点枚举算法的优化32.阅读以下程序段,你能对其枚举效率进行优化吗?s=0i=1do while i=100 If i Mod 5 =0 then num=num+1 End if i=i+1LoopText1.Text=str(num)你的修改方案是s=0 do while If i Mod 5 =0 then num=num+1 End if LoopText1.Text=str(num)本课总结4确定枚举对象、枚举范围和判断条件;解的列举,不能遗漏,也不能重复;为了提高解决问题的效率, 枚举范围要优化外循环一一列举,内分支一一判断THANKS谢谢观看能力提升