内容正文:
枚举算法的程序实现
枚举算法
???
定义:按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,就采纳这个解,否则就抛弃它。
例一
怎样在一大串没有标明的钥匙中找到我们教室的钥匙呢?
一一列举,尝试
1)不遗漏
2)不重复
枚举算法应用
例二
一张单据上有一个4位数的编号,其十位数处已变的模糊不清,如图所示。但是知道这个4位数是16的倍数或23的倍数。你能恢复这个编号吗?
假设这个数为n=25i6
则i可能为0-9
n=2500+i*10+6
For 语句
n=2506+i*10
if n mod 16=0 or n mod 23=0 then
print n
endif
For i=0 to 9
Next i
例三
一张单据上有一个4位数的编号,其中有两位数字已变的模糊不清,如图所示。但是知道这个4位数是16的倍数或23的倍数。你能恢复这个编号吗?
假设这个数为n=j5i6
则j可能为1-9,i可能为0-9
n=1000*j+500+i*10+6
1 0
1
2
……
9
千位j 十位i 四位数 vb代码 综合代码
j=1
For i=0 to 9
Next i
n=j*1000+506+i*10
if n mod 16=0 or n mod 23=0 then
print n
endif
15i6
2 0
1
2
……
9
9 0
1
2
……
9
25i6
95i6
j=2
For i=0 to 9
Next i
j=9
For i=0 to 9
Next i
For j=1 to 9
Next j
For i=0 to 9
Next i
n=j*1000+506+i*10
if n mod 16=0 or n mod 23=0 then
print n
endif
For 语句
For j=1 to 9
For i=0 to 9
n=50