引言:网上的代码多多少少都有点问题,所以自己写了一个。
问题:贪心算法背包问题
假设有n种宝物,每种宝物i对应价值为vi,重量wi,毛驴只能运载重量为m的宝物。每种宝物只能拿1件,可分割。如何使得毛驴运走的宝物价值最大?
贪心策略:
1)每次挑选价值最大的宝物装入背包,得到的结果是否最优?
2)每次挑选重量最小的宝物装入背包,得到的结果是否最优?
3)每次挑选单位重量价值最大的宝物,价值是否最高?
算法设计
贪心算法背包问题
1)数据结构及初始化。
- 计算性价比
- 结构体item用于存储宝物的重量、价值和性价比
- 变量sum用于存储毛驴当前能够运走的最大价值
- 按照性价比进行降序排序
2)贪心策略:
每次挑选性价比最大的宝物