算法--枚举

枚举思想

1,枚举算法的定义:

在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么该结论是可靠 的,这种归纳方法叫做枚举法。

2,枚举算法的思想是:

将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,保留合适的,舍弃不合适的。
3,使用枚举算法解题的基本思路如下:
(1)确定枚举对象、范围和判定条件。
(2)逐一枚举可能的解并验证每个解是否是问题的解。
4,枚举算法步骤:
(1)选择合适的研究对象的范围。
(2)找到判断正确解的条件,列举。
(3)逐一检验范围内的所有研究对象,

5.优缺点

  • 优点:算法简单,在局部地方使用枚举法,效果十分的好
  • 缺点:运算量过大,当问题的规模变大的时候,循环的阶数越大,执行速度越慢

百钱买百鸡问题

 

x=0
while x<=int(100/5): #确定枚举对象,范围和判定条件
    y=0
    while y<=int(100/3):#确定枚举对象,范围和判定条件
        z=100-x-y       #列举
        if 5*x+3*y+z/3==100:#逐一枚举可能的解,并验证每个解是否是问题的解
            print(x,y,z)
        y=y+1
    x=x+1

结果:

x: 0 y: 25 z: 75
x: 4 y: 18 z: 78
x: 8 y: 11 z: 81
x: 12 y: 4 z: 84

 

水仙花问题

 

python代码

x=100
while int(x)<=999:
    a=int(x/100)
    b=int((x-a*100)/10)
    c=x-a*100-b*10
    if a**3+b**3+c**3==x:
        print("a",a,"b",b,"c",c)
    x=x+1

结果:

a 1 b 5 c 3
a 3 b 7 c 0
a 3 b 7 c 1
a 4 b 0 c 7

包装问题

 

 流程图

python代码:

x=1
while 0<x<=int(600/8):
    y=1
    while 0<y<=int(600/3):
        if 8*x+3*y==600:
            print(x,y)

        y=y+1
    x=x+1

答案:

3 192
6 184
9 176
12 168
15 160
18 152
21 144
24 136
27 128
30 120
33 112
36 104
39 96
42 88
45 80
48 72
51 64
54 56
57 48
60 40
63 32
66 24
69 16
72 8
View Code

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/sticker0726/p/8722279.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值