给定n个物品和一个容量为C的背包,物品i的重量是
w
i
\displaystyle w_i
wi,其价值是
v
i
\displaystyle v_i
vi,背包问题是如何选择装入背包的物品的总价值最大。
C++
#include<iostream>
using namespace std;
int KnapSack(int w[],int v[],int C,int n)
{
int i;
int maxValue=0;
double x[10]={0};
for(i=0;w[i]<C;i++)
{
x[i]=1;
C=C-w[i];
maxValue+=v[i];
}
x[i]=(double)C/w[i];
maxValue+=x[i]*v[i];
return maxValue;
}
int main()
{
int C,n;
cin>>C>>n;
int w[100],v[100];
for(int i=0;i<n;i++)
cin>>w[i]>>v[i];
cout<<KnapSack(w,v,C,n);
}