概述
枚举法的基本思想
- 在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么这结论是可靠的,这种归纳方法叫做枚举法(穷举法)。
- 枚举法的核心思想就是枚举所有可能,其本质就是在所有可能的候选答案中搜索问题可能的解。使用枚举法应满足两个条件:
(1)可预先确定候选答案的数量
,(2)候选答案的范围在求解之前必须有一个确定的集合
。 - 枚举法的结构通常是
循环+判断
。
枚举法的优缺点
优点
- 算法简单,在局部地方使用枚举法,效果十分的好;
- 得到的结果肯定是正确的;
缺点
- 可能做了很多的无用功,浪费了宝贵的时间,效率低下;
- 运算量过大,当问题的规模变大的时候,循环的阶数越大,执行速度越慢。
应用枚举法的基本思路
step1. 确定枚举对象、枚举范围和判定条件;
step2. 枚举可能的解,验证是否是问题的解。
枚举法示例
百元买鸡问题
[问题描述] 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
[思路解析] 由题可设买公鸡
x
x
x 只,买母鸡
y
y
y只,买小鸡
z
z
z只,有方程
x
+
y
+
z
=
100
,
5
x
+
3
y
+
z
/
3
=
100
x+y+z=100, 5x+3y+z/3=100
x+y+z=100,5x+3y+z/3=100,由此可得代码:
'''
百元买鸡问题
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
'''
def enum():
res = []
for x in range(1, 101):
for y in range(1, 101):
for z in range(3,101,3):
if x*5 + y*3 + z/3 == 100 and x + y + z == 100:
res.append([x,y,z])
return res
res = enum()
for each in res:
print(f'买公鸡{each[0]}只,母鸡{each[1]}只,小鸡{each[2]}只')
[结果]
买公鸡4只,母鸡18只,小鸡78只
买公鸡8只,母鸡11只,小鸡81只
买公鸡12只,母鸡4只,小鸡84只
最后
以上就是谦让老虎为你收集整理的算法思想之枚举法的全部内容,希望文章能够帮你解决算法思想之枚举法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复