Python贪心算法

贪心算法

贪心算法用于解优化问题的一类算法

一.步骤

1.遍历备选的元素
2.贪心的策略确定选择一个决策的过程

二.决策过程

1.原集合大小依次变小,剩余的元素状态不发生变化
2.新集合大小依次变大

三.例题

硬币找零
coin=[1,5,10,25,100] 希望找36元 如何找零使硬币个数最少?
此处a=36
找最接近a的,也就是找25
此时a=11
找最接近a的,也就是10
此时a=1
找最接近a的,也就是1
直到a=0
即:
1.min(a-coin[1,5,10,25,100]) >0
2.商(a/coin[1,5,10,25,100])>0
代码:

#贪心算法例题(找硬币)
def coin(n):
    allcoin=[1,5,10,25,100]
    solusion=[]
    s_allcoin=sorted(allcoin,reverse=True)
    for i in s_allcoin:
        num_coin=int(n/i)
        solusion+=[i, ]*num_coin    
        n=n-i*num_coin
        if n<=0:
            break
    return solusion
print(coin(36))

分析:也就是说,设需要找的零钱为a,用a去除以集合(集合从大到小排列)各个元素,对应的商取整数(当元素大于a时,得到的结果为0,也就不会找取此元素对于面值的钱),同时记录所需找取的面值与个数,注意a不是一成不变的。

备注

此文章为看完某视频后所整理的笔记,非纯原创。

你可能感兴趣的:(Python,python,贪心算法,算法)