博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
问题 F: 背包问题
阅读量:7143 次
发布时间:2019-06-29

本文共 1306 字,大约阅读时间需要 4 分钟。

题目描述

现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大。

输入

第一行输入一个正整数n(1<=n<=5),表示有n组测试数据;
随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10);s表示有s个物品。接下来的s行每行有两个正整数v,w。

输出

输出每组测试数据中背包内的物品的价值和,每次输出占一行。

样例输入

13 155 102 83 9

样例输出

65
1 #include
2 #include
3 typedef struct NODE 4 { 5 int v , w; 6 }Node; 7 Node array[11]; 8 9 int comp(const void *a , const void * b) 10 { 11 return (*(Node *)b).v - (*(Node *)a).v ; 12 } 13 int main() 14 { 15 int i; 16 17 scanf("%d" , &i); 18 while(i--) 19 { 20 int a , b , j, sum = 0; 21 scanf("%d %d" , &a , &b); 22 for(j = 0 ; j < a ; j++) 23 { 24 scanf("%d %d" , &array[j].v , & array[j].w ); 25 } 26 qsort(array , a , sizeof(Node) , comp); 27 for(j = 0 ; j < a ; j++) 28 { 29 if(array[j].w > b) 30 { 31 sum += b * array[j].v ; 32 break; 33 } 34 b -= array[j].w; 35 sum += array[j].v * array[j].w ; 36 } 37 printf("%d\n" , sum); 38 } 39 return 0; 40 }
View Code

 

转载于:https://www.cnblogs.com/tong69/p/5771203.html

你可能感兴趣的文章
vue-cli解析
查看>>
python进行毫秒级计时时遇到的一个精度问题
查看>>
tweak
查看>>
Innodb索引以及查询优化的一些见解
查看>>
SSM学习系列(三) Hello Spring MVC
查看>>
教你如何直接访问php实例对象的private属性
查看>>
sass的基本使用
查看>>
chrome扩展推荐:帮你留住每一次ctrl+c --- Clipboard History 2
查看>>
恶意软件盯上了加密货币,两家以色列公司受到攻击
查看>>
专访《Haskell函数式编程入门》作者张淞:浅谈Haskell的优点与启发
查看>>
VS2017 15.4提供预览版,面向Windows 10秋季更新(FCU)
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
如何自动搞定全站图片的alt属性?
查看>>
配置一次,到处运行:将配置与运行时解耦
查看>>
突发热点事件下微博高可用注册中心vintage的设计\u0026实践
查看>>
Elixir 1.3带来新的语言功能、API和改进后的工具
查看>>
用Elm语言降低失败的风险
查看>>
抓住热门话题一对一直播,如何在风浪四起的直播市场劈风斩浪? ...
查看>>
手把手教你用owncloud搭建属于自己的云盘
查看>>
epoll+socket实现 socket并发 linux服务器
查看>>