1 / 56
文档名称:

信息奥赛—穷举.ppt

格式:ppt   大小:4,921KB   页数:56页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

信息奥赛—穷举.ppt

上传人:中华文库小当家 2020/11/7 文件大小:4.81 MB

下载得到文件列表

信息奥赛—穷举.ppt

文档介绍

文档介绍:OicqPassOver这个工具可以用来探测QQ
的口令,它根据机器性能最高可以每秒测试
20000个口令,如果口令简单,一分钟内,
密码就会遭到破译。
这些密码破译软件通常就是用的
穷举算法。
穷举的策略应该是直接基于计算机
特点而使用的思维方法,在一时找不
到解决问题的更好途径(比如数学公
式或规律规则)时,可以根据问题中
的部分(约束)条件,将可能解的情
况列举出来,然后一一验证是否符合
整个问题的求解要求。
实例:编一个程序找出三位数到七位数中所
有的阿姆斯特朗数。阿姆斯特朗数也叫水仙花数,
它的定义如下:若一个n位自然数的各位数字的n
次方之和等于它本身,则称这个自然数为阿姆斯
特朗数。例如153(153=1*1*1+3*3*3+5*5*5)
是一个三位数的阿姆斯特朗数,8208则是一个四
位数的阿姆斯特朗数。
算法描述:
forI:=100to9999999do
begin
验证是否是阿姆斯特朗数,若是则输出;
end;
钞票换硬币
把一元钞票换成一分、二分、五分硬币(每种
至少一枚),有哪些种换法?461种
var i,j,k, total: integer
beg in
tota1:=0;{总数设为0
for i: =1 to 99 do
i:二分硬币最多99枚}
for j: =1 to 49 do
j:二分硬币最多49枚
fork:=1to19do{k:五分硬币最多19枚}
if i*1+j*2+k*5=100 then begin
writeln(i: 3, j: 3, k: 3
inc(total)
总数加1}
writeln(total)
readin
d
百钱买百鸡
【题目】一只公鸡值5元,一只母鸡值3元,3
只小鸡值1元,现用一百元要买一百只鸡。问有
什么方案?
这是一个古典数学问题,设一百只鸡中公鸡、母鸡
小鸡分别为x,y,z,问题化为三元一次方程组:
这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数
都是100,可以确定x,y,z的取值范围:
1)x的取值范围为1~20
2)y的取值范围为1~33
3)z的取值范围为3~99,步长为3
对于这个问题我们可以用穷举的方法,遍历x,y,z的所有
可能组合,最后得到问题的解
下式算式中不同的字母代表不同的数字,编程
打印出下列算式
A+BC+DEF=GHIJ
可以确定d=9,g=1,h=0
分书问题
有A、B、C、D、E五本书,要分给张
王、刘、赵、钱五位同学,每人只能选一本
事先让每人把自己喜爱的书法填于右表,编程
找出让每人都满意的方案。
ABCDE
张王刘赵钱
① C B D E
② DA C B E
③ D B CA E
④ DE C A B
total: =0
for z:=3 to 4 do
for w: =1 to 5 do
var z, w, 1, zh, g, total: byte,
procedure output
f ( w<>3) and(w<>4) then
begin
for l: =2 to 3 do
writeln(zhang: chr(+ 64))
for zh =1 to 4 do
writeln(wang:', chr(w+64))
if zh<>3 then
writeln('liu
writeln(zhao: chr(zh+64));
for q: =2 to 5 do
writeln(qian: chr(q+ 64)
if (a<>3)and(a<>4) then begin
fz+w+1+zh+g=15 then
c(total);
if z*w**zh*q=120 then output
nd:
rite(total)
end
实例:砝码称重( NOIP T96-4)
设有1g、2g、3g、5g、10g、20g的砝码各若干枚
(其总重<=1000),输出用这些砝码能称出的不同重
量的个数,但不包括一个砝码也不用的情况。
算法分析:最容易想到的方法就是枚举出有
几个1g,几个2g,几个3g…几个20g,然
后统计有几种不同的重量。用数组w[1]~w6]
表示砝码的重量,q1q6]表示选择方案。