标签:
题意:有n件手镯,总重量不能超过M,每个手镯有一个体重W【i】和魅力V【i】,问在不超过M的情况下能获得的魅力总和
思路:把M当背包总容量,用0-1背包写
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <math.h>
#include <vector>
using namespace std;
#define N 60900
#define met(a,b) memset(a,b,sizeof(a));
vector<vector<int> >Q;
int dp[N],v[N],w[N];
int main()
{
int n,m;
while(scanf("%d %d",&n,&m)!=EOF)
{
met(v,0);
met(w,0);
for(int i=1; i<=n; i++)
scanf("%d %d",&w[i],&v[i]);
met(dp,0);
for(int i=1; i<=n; i++)
{
for(int j=m; j>=w[i]; j--)
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
printf("%d\n",dp[m]);
}
return 0;
}
2、Charm Bracelet( poj 3624)简单0-1背包
标签:
原文地址:http://www.cnblogs.com/jun939026567/p/5741255.html