一般背包问题
2016-03-15 14:35
477 查看
#include<iostream> #include<algorithm> using namespace std; struct bag{ int w;//物品的重量 int v;//物品的价值 double c;//物品的性价比 }; struct bag a[100]; int cmp(bag a,bag b) { if(a.c>=b.c) return 1; return 0; } //返回背包中物品的价值 double backpack(int n,bag a[],double c)//n表示物品的数量,a表示按照物品性价比排序后的数组,c表示剩余空间 { int i=0; int b=0;//获得的价值 //当物品i可以装入背包中 while(i<n&&a[i].w<c) { c=c-a[i].w; b+=a[i].v; i++; } //说明物品不能完全装入背包 if(i<n) b+=1.0*a[i].v*c/a[i].w ; return b; } int main() { int c; int n; int i; while(cin>>c>>n&&c) { for(i=0; i<n; i++) { cin>>a[i].w>>a[i].v; a[i].c = 1.0*a[i].v/a[i].w; } sort(a, a+n, cmp);//按照性价比排序 cout<<backpack(n,a,c); } return 0; }
相关文章推荐
- python 列表推导式
- Android5.0新特性——兼容性(support)
- Android:带输入框的弹窗
- 类
- Servlet与Jsp的区别
- (三)Boost库之字符串处理
- iOS NSDate日期时间及NSTimer定时任务
- libcurl增加HTTP header 和 POST之后获取返回数据
- 活动安排
- 最优装载方案
- 计算机类资料查找
- 001_JavaScript 错误 - Throw、Try 和 Catch
- android Notification
- 协同过滤中相似度的计算方式
- git 命令熟悉
- 日了Dog的swap
- Android5.0新特性2
- PHP sesion_start()或者session_regenerate_id()提示Cannot regenerate session id - headers already sent in
- (二)boost库之字符串格式化
- 四大组件之BroadcastReceiver详解