【第22期】观点:IT 行业加班,到底有没有价值?

基础入门之贪心算法

原创 2016年05月30日 16:17:01

学习材料:《2013年王道论坛计算机考研机试指南》

文中涉及对学习材料的摘录,以及自己的理解


1 题目【例2.11】:


1.1 题目分析:

总共拥有M pounds钱,去买N个room的X吨food;

第i个房间有J[i]吨food,对应所需F[i] pounds的钱;

如果剩余的钱不够买一个房间的全部食物,可以只买部分,那么  J[i] * a%吨食物 需要 F[i] * a% pounds的钱

目标——用有限的M pouds钱买尽可能多的食物

1.2 解题思路:

本质:在剩余储藏食物的房间中找性价比最高的房间 , 即 J[i] / F[i]最高的, 那么就应将N个房间按食物量与价格的性价比降序排列;

限制条件:依次购买按性价比降序排列的房间中的食物,直到钱花完或者购买完N个房间的食物;

注意:当最后剩余的钱不够买整个房间的食物,就按题中所述百分比购买部分

1.3 代码:


2 题目【例2.12】:


2.1 题目分析:

N个节目,每个节目的开始、结束时间已知:Time_s, Time_e;

目标:看尽量多的完整节目 ; 输出:所看的完整节目个数;

贪心策略:第一个节目选什么?  验证不是“开始时间最早的节目”,不是“持续时间最短的节目”, 而应该先看结束时间最早的节目

程序结束条件:依次选择结束时间最早的节目先看,直到看完最后一个节目,注意遍历N个节目的过程中,只有看完整的节目,才能算+1

2.2 代码:



总结:选择一个合适的贪心策略需要一定的技巧。 也就是判断在具体问题中,什么才是“当前最好的”,当前最优解。






版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

基础训练 完美的代价(贪心算法)

问题描述   回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。   交...

第六章贪心算法

第六章贪心算法    第1课 删数问题    第2

hdoj fatmouse(贪心算法入门)

FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

[ACM_HDU_1009]FatMouse' Trade(贪心算法入门)

FatMouse' Trade Time Limit: 2000/1000 MS (Jav

贪心算法::启发式搜索

蛮干算法的成功完全是借助于计算机运算的快速,如果问题的解比较少的时候使用起来是比较容易的。但当问题的解比较多,则不宜使用,常用的做法是剪枝,剪枝是一种形象的描述,因为按深搜的算法,图可以描述为与之对应的树或森林,而剪枝的意思就是去掉某些子树,为什么要去掉,这里要用到一个剪枝判断,判断的方法是具体问题具体分析,但是有一点是要考虑到的,剪枝的高效性是建立在判断的额外开销上的,如果这里的开销大,则剪枝只会宣告失败。 而更好的做法是运用“贪心策略”。 【贪心算法】 贪心算法(也叫贪婪算法)不是某
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)