学习Python算法:贪心算法
贪心算法也叫贪婪算法。意思是在解决问题时,总是做出当前最好的选择。也就是说,在不考虑整体最优解的情况下,他所做的在某种意义上就是局部最优解。
贪心算法无法获得所有问题的整体最优解。关键是选择贪心策略。所选择的贪心策略必须没有影响,即某个状态的前一个过程不会影响后续状态,只会影响后续状态。与当前形势有关。 ?之前是得到一个近似解,所以贪心算法存在以下问题:
1)贪心算法得到的解不一定是最优解
2)不适合最优值问题
3)适用。建立数学模型来描述问题
2。将要解决的问题分成几个子问题
3。求解每个子问题,得到子问题
4的局部最优解。将子问题的局部最优解综合为原问题的解
算法求解过程是首先从目标值的某个解开始,得到可行解的元素,然后将所有的解元素a 得到可行解。 ?在超市结账时,如果需要找零,收银员希望给顾客最少数量的硬币。那么,如何求出需要找零的金额,如何求出最少的硬币数量呢? ?也可以用五个一角,也可以用一个二角,三个一角,所以我们在解决这个问题的时候可以从这几个角度去思考。
3) 代码实现
| 12345678910111213141516171819202122232425262728 | def main(): = ♂ 请进入每次更改的金额为:')。 对于我在范围() , len(d_num): (d_num0[ i] )) d #计算收银员有多少钱 sum = 浮动( 输入"请输入您需要的零钱:")) if sum > s: # 如果输入的总金额不超过总金额 打印(“数据错误”) = s - ❀ #如果想要使用最少数量的硬币,就必须使用所有大面额的硬币,所以从数组中面额大的元素开始开始 i = 6 同时 = > =] n = int()1.000000元币使用1枚0.20000余和使用1枚0.100000元币先输入每个的金额找零然后计算总金额,确定可以找零,然后进行下一步找零。为了保证找零的金额最小,就使用大面额的硬币,所以从大面额的硬币开始。如果大宗派不满意,那就往下走。该算法的关键在于sum的值是动态变化的,对变化的sum值进行判断,直到最终完成。 |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网