算法--枚舉

枚舉思想

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

結果:python

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

結果:ide

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

包裝問題

 

 流程圖spa

python代碼:code

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
相關文章
相關標籤/搜索