贪心算法

贪心算法
定义:在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。(将一个复杂的求最优解的问题转化为多个小的问题,每个小问题的最优解加在一起就是全局的最优解)
注:一个问题在有好几种算法解决的情况下,贪心算法是最好的解决办法。
最优子结构:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。
一般结构: (1)候选集合A:问题的最终解均取自于候选集合A。
(2)解集合S:解集合S不断扩展,直到构成满足问题的完整解。
(3)解决函数solution:检查解集合S是否构成问题的完整解。
(4)选择函数select:贪心策略,这是贪心算法的关键。
(5)可行函数feasible:解集合扩展后是否满足约束条件。
存在问题:1. 不能保证求得的最后解是最佳的;
2. 不能用来求最大或最小解问题;
3. 只能求满足某些约束条件的可行解的范围。
背包问题:1. 0-1背包问题(不可分割)
2. 背包问题(可分割)
总结:经过这段时间的学习总结了几点值得注意的问题

  1. 迭代器是一种遍历的工具,不止应用于set 的输出。
  2. While(scanf()!=EOF)比其他死循环更省时
  3. 优先队列很好用,默认为大根堆,也可以自己调(priority_queue <LL,vector,greater >)
  4. Map++是实值加一
  5. 向量定义系统默认10个元素
    6.string类型有空格是可以用getline()输入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值