VB编程枚举法讲义_第1页
VB编程枚举法讲义_第2页
VB编程枚举法讲义_第3页
VB编程枚举法讲义_第4页
VB编程枚举法讲义_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

枚举法

江劼问题一串钥匙,我忘记哪把开门了,怎么办?列举所有、检验不遗漏、不重复

枚举法

有一类问题可以采用一种盲目的搜索方法,在搜索结果的过程中,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不合要求的,保存那些符合要求的结果,这种方法叫做枚举法(enumerativealgorithm)。枚举法性质:一一列出该问题所有可能的解,并在逐一列举的过程中检验每个可能解是否是问题的真正解,是,采纳,否那么抛弃它。号码问题设想一某号码,其的个位数和十位数已变得模糊不清,我们看到的仅仅是646172□□:但是知道该八位数能被57或67整除,找出所有满足条件的八位数。646172□□表示:n=64617200+t(0<=t<=99)“能被57或67整除”表示:nmod57=0ornmod67=0

枚举法关键点:列举、检验注意点:不遗漏、不重复算法结构:循环结构,反复执行的循环体为选择结构

枚举法设想一某号码,其的个位数和十位数已变得模糊不清,我们看到的仅仅是646172□□:但是知道该八位数能被57或67整除,找出所有满足条件的八位数。646172□□表示:n=64617200+t(0<=t<=99)“能被57或67整除”表示:nmod57=0ornmod67=0

总结1、列举的次序是否唯一?2、为什么n每次循环加1或减1改变,加2、3不行吗?练习号码6461□□72的两个数字模糊不清,但是知道该八位数能被57或67整除,找出所有满足条件的八位数。(答案:6461497264615872)6461□□72表示:判断条件:n=64610072+t*100(0<=t<=99)nmod57=0ornmod67=0思考求出边长小于200最小的海伦三角形(假设三边长是三个连续整数,面积也是整数,那么称为海伦三角形。)答案:(3,4,5)(13,14,15)(51,52,53)(193,194,195)2,3,43,4,5……197,18,200n,(n+1)(n+2)练习应该在式子3□*8256=□3*6528中填上哪一个数字,等式才成立?(答案:4)3□表示:判断条件:30+t(0<=t<=9)t*10+

3(0<=t<=9)□3表示:(30+t)*8256=(t*10+3)*6528练习号码6461□□72的两个数字模糊不清,但是知道该八位数能被57或67整除,找出所有满足条件的八位数。(答案:6461497264615872)6461□□72表示:n=64610072+t*100(0<=t<=99)Dimt,naslongFort=

0

to99Nexttifnmod57=0ornmod67=0thenPrintnendifn=64610072+t*100鸡兔同笼我国隋朝时期有部数学著作叫《孙子算经》,鸡兔同笼是其中一个有趣而具有深远影响的题目:今有鸡兔同笼,上有35个头,下有94只脚,问鸡兔各有多少?分析:设有x只鸡、35-x只兔,那么2x+4(35-x)=94因为要求的只是正整数解,所以,可以列举范围内的所有整数,逐一用方程进行验证,从而得出方程的解。水仙花数求100~999中的水仙花数,(假设三位数abc,

abc=a^3+b^3+c^3,那么称为水仙花数153,1^3+5^3+3^3=1+125+27=153)

(答案:153370371407)列举范围:100~999检验条件:abc=a^3+b^3+c^3个位:c=nmod10十位:b=(nmod100)\10n\10mod10百位:a=int(n/100)n\100百鸡问题本问题记载于中国古代约5-6世纪成书的《张邱建算经》中,《张邱建算经》是继《九章算术》之后我国数学史上一部辉煌著作。题为:一只公鸡的价格是5个钱,一只母鸡的价格是3个钱,三只小鸡的价格是1个钱,想用100个钱买100只鸡,问公鸡、母鸡、小鸡各买几只?判断素数判断输入的任意一个整数是否素数,假设为素数,那么输出“Yes”,否那么输出“No”。分析:如果一个数只能被1和它本身整除,这个数就是素数。因此,判断一个整数a是否素数,只要看一下在2到a-1之间能否找到一个整数能够整除a就可以了,如果没有,那么为素数。循环次数:a-2检验条件:能够整除aa假设有约数,必有1个<=2到即可能减少吗?找出各位上数字之和为8,并且是素数的所有二位正整数的和,并输出这些数及其和。分析:各位上数字之和为8,的二位正整数

i*10+8–i(i=1,2,……,8)列举范围:1~8检验条件:i*10+8–i是素数练习应该在式子3□*8256=□3*6528中填上哪一个数字,等式才成立?(答案:4)3□表示:30+t(0<=t<=9)t*10+

3(0<=t<=9)□3表示:DimtaslongFort=0to9Nexttif(30+t)*8256=(t*10+3)*6528thenPrinttendif枚举法让计算机对所有数据逐一列举进行检验,判断是否满足条件特征:不遗漏、不重复实现方法:循环结构嵌套分支结构适用情况:需要盲目的搜索实例:号码缺失解析法根据条件,找出条件与要求结果之间的数学表达式,通过数学表达式求解的方法。特征:数学、物理表达式实现方法:顺序结构、分支结构、循环结构适用情况:数理方法解决实例:求解二元一次方程组指令程序软件指令一个操作命令3+6程序指令有序集合软件程序+相关文档word软件+帮助说明文档数组单个变量内存位置离散数组变量内存位置连续a[10]a[0]-a[9]ora[1]-a[10]10个可以赋值,运算a[3]+5a[3]=a[3]+5d[1]d[2]d[3]d[4]d[5]d[6]d[7]d[8]d[9]d[10]用法一样5d数组名数组元素值数组下标1-10排序冒泡排序相邻互换每遍互换几次选择排序最值互换每遍互换1次查找顺序查找依次遍历,检查

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论