完全背包
有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是vii,价值是cii。
现在请你选取一些物品装入背包,使这些物品的体积总和不超过背包容量,且价值总和最大。
其中1<=N<=100,1<=V<=50000,1<=vii,cii<=10000。
Input
第一行输入两个数N,V,分别表示物品种类数和背包容积; 之后N行,每行两个数vii,cii,分别表示第i种物品的体积和价值;
Output
输出一个数,表示最大的价值
Sample Input
2 11
2 3
6 14
Sample Output
20
题意描述:给物品种数和背包容量,每个物品都有无限件,给出每个物体的体积和价值。求背包装东西的最大价值
解题思路:完全背包问题,套模板即可
AC
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
int v[50100],w[10010],f[100100];//体积 价值
using namespace std;
int main(void)
{
int n,m;
while(cin>>n>>m)//物体个数 背包体积
{
memset(v,0,sizeof(v));
memset(w,0,sizeof(w));
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++)
cin>>v[i]>>w[i];//体积,价值
for(int i=1;i<=n;i++)
for(int j=v[i];j<=m;j++)
f[j]=max(f[j],f[j-v[i]]+w[i]);
cout<<f[m]<<endl;
}
return 0;
}