总结:贪心算法

1.什么是贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,而是寻求局部最优解,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。
2.能够解决的问题:背包问题、最优装载问题、区间问题、小船过河问题
利用贪心策略解题时,需要解决两个问题:(1)该题是否适用于用贪心策略求解;(2)如何选择贪心标准,以得到问题最优解。
注意:在贪心问题求解中一定要对各种较优策略考虑全面
3.典型例题
A 最优装载问题
有一批集装箱要装上一艘载重量为c的轮船,其中集装箱i的重量为wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。
贪心策略:重量最轻者先装(按集装箱的重量升序排列)

//定义一个结构体记录集装箱的编号和重量
struct load {
 int index;
 int w;
}box[1001];

//升序排列
bool cmp (load a, load b) {
 if (a.w<b.w) return true;
 else return false;
}
stable_sort(box+1, box+n+1, cmp);

B 背包问题
给定一个载重量为M的背包,考虑n个物品,其中第i个物品的重量 ,价值wi (1≤i≤n),要求把物品装满背包,且使背包内的物品价值大。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值