数据结构 贪心算法,数据挖掘算法python
介绍了Python贪婪算法。分享仅供参考。具体如下。
1.找零问题:假设只有1分、2分、5分、1角、2分、5分、1元硬币。在超市结账时,如果你需要找零,收银员希望给顾客最少数量的硬币。那么,给定需要换的零钱数量,怎么求最少的硬币数呢?
#-*-编码:utf-8-*-
戴尔大师(:
D=[0.01,0.02,0.05,0.1,0.2,0.5,1.0]#保存每枚硬币的面额
D_num=[] #存储硬币的数量。
s=0
#你的找头总数
Temp=raw_input(请输入每次更改的数量:)
d_num0=temp.split( )
forIinrange(0,Len ) d_num0)):
d_num.append(int(d_num0[I]))
S=d[i] * d_num[i] #计算收银员有多少钱
Sum=float(raw_input(请输入“您需要的更改:”))
如果总和s:
#如果输入的总金额大于收银员的总金额,则不能更改。
打印("数据中有错误"
返回0
s=s和
#为了使用最少数量的硬币,必须使用所有大面额的硬币,所以从数组中大面额的元素开始遍历。
i=6
当i=0时:
如果sum=d[i]:
n=int(sum/d[I])).
如果n=d_num[i]:
N=d_num[i] #更新n
Sum -=n * d[i] #贪婪的重要步骤是动态改变总和,
Print(用过的%d %f元硬币(%) (n,d[i]))
i -=1
if __name__==__main__ :
main())
2.求最大分配数组之和的问题:给定一个整数数组(数组元素负责),求其连续部分数组之和的最大值。
#-*-编码:utf-8-*-
戴尔大师(:
s=[12,- 4,32,- 36,12,6,-6]
print()中定义的数组是,s
s_max,s _ sum=0,0
forIinrange(Len ) s):
s_sum=s[i]
如果s_sum=s_max:
连续更新s_max=s_sum #的值,并重复s_max的值,以尽可能最大化hldfs。
elif s_sum 0:
s_sum=0
打印(最大分配列总和为,s_max))
if __name__==__main__ :
main())
3.汽车忽略冷油后,可以行驶N公里。旅途中有几个加油站。为了最大限度地减少沿途加油次数,设计了一种有效的算法来指示停在哪个加油站加油。对于给定的n(n=5000)和k(k=1000)个加油站位置,编程并计算最短加油时间。
#加了车忽略的冷面油可以跑N公里。旅途中有K个加油站。
defgreedy(:
n=100
k=5
d=[ 50,80,39,60,40,32 ]
#表示加油站之间的距离。
数量=0
#表示加油次数。
forIinrange(k):
if d[i] n:
打印(无解))。
#当距离大于n时,从距离获得的任何值都无法计算。
返回
I,s=0,0
重复到#s
当i=k时:
s=d[i]
如果s=n:
如果#局部和大于N,则将局部和更新为当前距离。
s=d[i]
#贪婪是指不小心冷面后跑的越远越好。
数量=1
i=1
是,印刷(数字)
if __name__==__main__ :
贪心() )
对Python相关内容感兴趣的读者请参考本网精选文章,《Python数据结构与算法教程》,《Python函数使用技巧总结》,《Python字符串操作技巧汇总》,《Python入门与进阶经典教程》,《Python文件与目录操作技巧汇总》,0103010,0103
希望这篇文章能对大家的Python编程有所帮助。
标题:Python贪婪算法示例总结
本文地址:3358 www . CPP cns.com/jiao本/python/226038.html
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。