您的位置:首页 > 其它

51nod 1085 01背包模板

2016-01-24 20:11 281 查看
在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。

#include <iostream>
#include <cstring>
#include <cmath>
#include <string>
#include<cstring>
using namespace std;

int const maxn = 10005;
int w[maxn],c[maxn], f[maxn];

int main()
{
int n,v;
while(cin>>n>>v)
{
for ( int i = 1;i <= n;i++)
{
cin>>c[i]>>w[i];
}
memset(f,0,sizeof(f));
//不要求把背包装满,总价值尽可能大就行
/*
f[0]=0;
for (int i = 1;i < 1001;i++)
{
f[i]=-1000000;
}
*/
//要求恰好把背包装满
for (int i = 1;i <= n;i++)
{
for ( int j = v;j >= c[i];j--)
{
f[j]=max(f[j],f[j-c[i]]+w[i]);
}
}
cout<<f[v]<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: