描述
给定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