题解洛谷P2240(c++解法)【深基12.例1】部分背包问题

该博客介绍了如何使用贪心策略解决洛谷P2240问题。关键在于将金币按性价比排序,并逐一选择性价比最高的金币装入背包。当背包剩余容量大于等于金币重量时,全部取走,否则取走尽可能多的部分。代码实现中需要注意整型与浮点型转换的细节。
摘要由CSDN通过智能技术生成

千万不要被题目给误导了,这道题是贪心。
所有金币都可以分开,也就是说只要按照性价比最高的取一定得到的价值最大。
性价比就是这堆金币的价值除以重量。
只需要把这n堆金币按性价比排序就行了。
然后依次遍历,如果背包中剩余可以拿的重量大于等于这堆金币的重量,就全拿,否则直接装满。
直接装满这里注意一下整型转浮点的细节就好了。

代码如下:

#include<cstdio>
#include<algorithm>//用到sort
using namespace std;
struct Node{
   //金币结构体
	int w,v;//w表示重量,v表示价值
}a[110];
int read(){
   //普通的快读,不解释
	int x=0,f=1;
	char c=getchar();
	<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值