POJ 3624 Charm Bracelet
阿新 • • 發佈:2018-12-15
題目大意:
美麗的貝希想要增加自己魅力值,但是帶上手鐲會增加體重。要保證自己體重要在限制內,儘量增加自己的魅力。
這是一道經典的0-1揹包問題,因為體重值太大,用二維陣列來DP不現實。我用的是滾動陣列。
#include <cstdio> #include <algorithm> /* 滾動陣列 */ using namespace std; int main() { int n,m; int w[3500]={0},d[3500]={0},f[13000]={0}; scanf ("%d %d",&n,&m); for (int i=1;i<=n;++i) { scanf ("%d %d",&w[i],&d[i]); /* for (int j=m;j>=0;j--) { if (j>=w[i]) f[j]=max(f[j],f[j-w[i]]+d[i]); } */ } for (int i=1;i<=n;i++)//這步迴圈不必要,可以放在輸入時 { for (int j=m;j>=0;j--) { if (j>=w[i]) f[j]=max(f[j],f[j-w[i]]+d[i]); } } printf ("%d\n",f[m]); return 0; }