枚举
基本介绍
枚举:枚举所有的可能。枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:(1)可预先确定候选答案的数量;(2)候选答案的范围在求解之前必须有一个确定的集合。
优缺点
- 优点:算法简单,在局部地方使用枚举法,效果十分的好
- 缺点:运算量过大,当问题的规模变大的时候,循环的阶数越大,执行速度越慢
举例
1.水仙花数
题目
输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 13 + 53 + 33。
代码
for i in range (100,1000):
a = i//100
b = i//10%10
c = i%10
if (a**3+b**3+c**3 == i):
print(i)
输出结果
153
370
371
407
2.百鸡百钱问题。
题目
公鸡每只5元,母鸡每只3元,三只小鸡1元,用100元买100只鸡,问公鸡、母鸡、小鸡各多少只?
代码
for i in range(20):
for j in range(33):
k = 100-i-j
if k%3==0 and 5*i+j*3+k/3==100:
print("公鸡:{},母鸡:{},小鸡:{}".format(i,j,k))
输出
公鸡:0,母鸡:25,小鸡:75
公鸡:4,母鸡:18,小鸡:78
公鸡:8,母鸡:11,小鸡:81
公鸡:12,母鸡:4,小鸡:84
排序
学习过程中看到一个很好的博客,在这留存一下,方便复习。
https://blog.csdn.net/qq_51664685/article/details/124427443?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-124427443-blog-124121186.pc_relevant_vip_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-124427443-blog-124121186.pc_relevant_vip_default&utm_relevant_index=2