:P22有一类问题可以采用一种盲目的搜索方法,在搜索结果的过程中,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不合要求,保留那些符和要求,这种方法叫做枚举算法。:按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能的解是否是问题的真正解,若是,则采纳这个解,否则抛弃它。在列举的过程中,既不能遗漏,也不能重复。一一列举出所有可能的解(列举范围)检验每个可能的解是否是真正的解(检验条件)循环结构(重复模式)分支结构(选择模式)循环嵌套分支应用枚举算法问题1:找出1~1000中所有能被7和11整除的数。分析:列举范围:i:[1,1000]检验条件:i能被7和11整除将流程图补充完整:开始i=1YYNN输出ii=i+1结束将VB程序代码补充完整:Dimiasintegeri=1i<=1000?imod7=0andimod11=0?应用枚举算法问题2:一张单据上有一个5位数的号码,它的十位和个位数字已被涂抹的看不清,但知道这个5位数是37的倍数,设计一个算法,找出该单据可能的号码。分析:列举范围:n:[12800,12899]检验条件:**将流程图补充完整:开始结束输出nn=12800将VB程序代码补充完整:Dimnasintegern=12800YYNNn<=12899?nmod37=0?n=n+1应用枚举算法问题3:对上题进行修改,这个5位数的千位和百位模糊不清,是37的倍数,设计一个算法,找出该单据可能的号码。分析:列举范围:n:[10028,19928]检验条件:**28将流程图补充完整:开始结束输出nn=10028将VB程序代码补充完整:Dimnasintegern=10028YYNNn<=19928?nmod37=0?n=n+100将流程图补充完整:开始结束输出nj=0YYNNnmod37=0?将VB程序代码补充完整:Dimjasinteger,Dimnasintegerj=0Ifnmod37=0thenprintnj<=99?n=10028+j*100j=j+1
枚举算法 来自淘豆网m.daumloan.com转载请标明出处.