【背包】Knapsack Problem(部分背包问题-贪心)

该博客探讨了如何解决背包问题,特别是部分背包问题,即允许物品部分装入背包以最大化总价值。博主通过编程任务介绍了输入输出格式,并给出了样例输入和输出。关键在于利用贪心策略来优化物品的选择,以达到背包内物品总价值的最大化。
摘要由CSDN通过智能技术生成

描述

给定n种物品和一个背包。物品i的体积是Wi,价值为Vi,背包的容量为C。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?在选择物品i装入背包时,可以选择物品i的一部分,而不一定要全部装入背包,1<=i<=n。

编程任务: 对于给定的n种物品和一个背包容量C,编程计算装入背包中最大的物品总价值。

输入

输入由多组测试数据组成。

每组测试数据输入的第1行中有2个正整数n(n<=200)和C(C<=100000)。正整数n是物品个数;正整数C是背包的容量。接下来的2行中,第一行有n个正整数,分别表示n个物品的体积,它们之间用空格分隔;第二行有n个正整数,分别表示n个物品的价值,它们之间用空格分隔。

输出

对应每组输入,输出的每行是计算出的装入背包中最大的物品总价值,保留一位小数。

样例输入

3 50
10 20 30
60 100 120

样例输出

240.0

分析:
可以选择物品i的一部分,而不一定要全部装入背包。->部分背包问题->贪心。
代码:

#include<bits/stdc++.h>
using namespace std;
struct node
{
   
    int w;
    int v;
    double d;
}a[201];
bool cmp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值