如题,贪心算法隶属于提高算法效率的方法,也常与动态规划的思路相挂钩或一同出现。下面介绍几个经典贪心问题。(参考自刘汝佳著《算法竞赛入门经典》)。
P.S.下文皆是我一个字一个字敲出来的,绝对“童叟无欺”,哈哈。(。⌒∇⌒) 耗费了我的很多时间,所以——希望对大家有帮助啊~ (=^‸^=)
一、背包相关问题
1.最优装载问题:给出N个物体,有一定重量。请选择尽量多的物体,使总重量不超过C。
解法:只关心数量多,便把重量从小到大排序,依次选,直到装不下。
2.部分背包问题:给出N个物体,有一定重量和价值。请选择一些物体的一部分使在总重量不超过C的条件下总价值最大。
解法:关心总价值大,物体可取部分,便优先取单位重量价值较大的物体。
3.乘船问题:有N个人,有一定重量。每艘船的最大载重量均为C,且最多载2人。请用最少的船装载所有人。
解法:关心数量少,要尽量使每艘船的实际载重量尽量接近于最大载重量。便把重量从小到大排序,每艘船依次先载一个人,再载重量最接近船的剩余可载重量的人。这样可以使眼前的消费(剩余载重量)最少。
实现:用2个变量 l , r 分别从两头往中间移动,l 和 r 可共乘一艘船,或 r 自己乘一艘船。
二、区间相关问题
1.选择不相交区间:数轴上有N个开区间(Li,Ri),请选择尽量多个区间&