【算法笔记】贪心算法——01背包问题
2016-05-29 12:06
316 查看
贪心算法——01背包问题
#include<iostream> using namespace std; int main(){ int n; //物品数 float c; //背包容量 float res = 0; cin>>n>>c; float v ; //物品价值 float w ; //物品重量 float a ; //物品单价 for(int i = 0; i < n; i++){ cin>>v[i]>>w[i]; a[i] = v[i] / w[i] ; } //找出单价最大值及下标 float max = a[0]; int index = 0; for(int i = 1; i < n; i++){ if(a[i] > max){ max = a[i]; index = i; } } //边界条件,c = 0; while(c > 0){ if(w[index] <= c){//如果单价最高者放得下,全放进去 res += v[index]; //更新res c -= w[index]; //更新c a[index] = 0; //该物品不再参与比较 //找出单价次大值及下标 max = a[0]; index = 0; for(int i = 1; i < n; i++){ if(a[i] > max){ max = a[i]; index = i; } } }else{ //如果放不下,分割 res += c * a[index]; //剩余的装满 c = 0; } } cout<<res<<endl; return 0; }
相关文章推荐
- TI CC2541 OAD流程
- 用两个栈组成队列
- Shader Forge 颜色乘法+加法+控制饱和度+角色发光+和程序的衔接
- 同程面试经历 android开发工程师
- 计算机中的布尔操作 ^ (即XOR)的学习
- ActiveMQ编程实例
- 牧羊曲
- Digit(湘潭大学比赛)
- spring+mybatis+ehcahce实现注解缓存
- 线性表的顺序存储结构
- Digit(湘潭大学比赛)
- Hibernate 中的session 的flush、reflush 和clear 方法 ,及数据库的隔离级别
- CentOS7 根目录扩容
- Finereport与Java Web
- OSI七层模型
- Unix & Linux笔记(11)
- python入门神图
- [Sql2008错误问题]附件数据库时出现的3种常见错误的解决办法
- 二进制(2):浮点数
- ACM--木头序列--贪心+递减子序列--HDOJ 1051--Wooden Sticks