题目:Charm Bracelet
思路:裸的01背包……要用滚动数组。
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 3500
#define maxm 12880
int m,n;
int w[maxn+5],c[maxn+5];
int f[maxm+5]={0};
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d%d",&w[i],&c[i]);
for(int j=m;j>=0;j--){
if(j-w[i]>=0) f[j]=max(f[j],f[j-w[i]]+c[i]);
}
}
printf("%d\n",f[m]);
return 0;
}
本文通过一个具体的 CharmBracelet 问题实例介绍了如何使用01背包算法解决物品选择问题,并给出了使用滚动数组优化的C++代码实现。
194

被折叠的 条评论
为什么被折叠?



