· 什么是枚举算法?
枚举法又称穷举法,即将问题的所有可能情况一一列出来,然后根据要求逐一判断,最后得出问题的解
· 枚举算法优缺点?
优点:得到的结果一定正确
缺点:效率低,可能会做无用功
· 枚举算法举例
【百钱买百鸡】
>>>问题描述
我国古代数学家张丘建在《算经》一书中提出了一个数学问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
>>>算法分析
按数学的方法,可设公鸡买x只,母鸡买y只,小鸡买z只,列方程组为:
x + y + z = 100
5x + 3y + 1/3 z = 100
0 ≤ x ≤ 100
0 ≤ y ≤ 100
0 ≤ z ≤ 100
求解得:
x = 0 , y = 25 , z = 75或
x = 4 , y = 18 , z = 78或
x = 8 , y = 11 , z = 81或
x = 12 , y = 4 , z = 84
>>>编程算法
###百钱买百鸡
num = 0
for cock in range(0,101):
for hen in range(0,101):
for chick in range(0,101):
if cock + hen + chick == 100 and cock*5 + hen*3 + chick/3 == 100:
print(f'公鸡{cock},母鸡{hen},小鸡{chick}')
num += 1
print(f'共有{num}种结果')
运行结果
公鸡0,母鸡25,小鸡75
公鸡4,母鸡18,小鸡78
公鸡8,母鸡11,小鸡81
公鸡12,母鸡4,小鸡84
共有4种结果
【寻找完全数】
>>>问题描述
找出10000以内的所有完全数
>>>问题分析
首先,我们来看看什么是完全数(下面这段话来源于百度百科)
完全数又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。
>>>编程算法
###寻找完全数
list = [] #初始化空列表,用于存储结果
for num in range(1,10001): #对1-1000内自然数num依次判断
sum_factor = 0 #初始化因数的和sum_factor为0
for factor in range(1,num-1): #对num的因数factor依次判断
if num % factor == 0:
sum_factor = sum_factor + factor
if sum_factor == num: #满足条件
list.append(num) #存储在list列表
print(list) #打印结果
运行结果
[6, 28, 496, 8128]
【生日蜡烛】(2016蓝桥杯)
>>>问题描述
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。请问,他从多少岁开始过生日party的?
要求:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
>>>问题分析
我们不妨设某君的年龄在100岁之内,假设从x岁
开始过生日,现在年龄为y,由于年龄是连续等差数列,则根据等差数列求和,可列方程组:
(x + y) * (y - x + 1) / 2 = 236
0 ≤ x ≤ 100
x ≤ y ≤ 100
解得:
x = 26 , y = 33
>>>编程算法
###生日蜡烛
for x in range(1,100): #遍历开始年龄
for y in range(x,100): #遍历现在年龄
if (x+y)*(y-x+1)/2 == 236: #等差数列求和公式
print(x)
运行结果
26
以上就是“python算法教程(python算法枚举)”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/11041/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取