POJ 3624 Charm Bracelet G++
阿新 • • 發佈:2018-11-04
#include <iostream> using namespace std; int W[3402]; int D[3402]; int a[12881]; int b[12881]; //北京大學暑期課《ACM/ICPC競賽訓練》例題 int main() { int N,M; cin>>N>>M; //int W[N]; //int D[N]; for(int i=0;i<N;i++) { cin>>W[i]>>D[i]; } //int a[N][M+1]; for(int i=0;i<=M;i++) { if(W[0]<=i) { b[i]=D[0]; }else { b[i]=0; } } for(int i=1;i<N;i++) { for(int j=0;j<M+1;j++) { if((j-W[i])>=0) { a[j]=max(b[j],b[j-W[i]]+D[i]); }else { a[j]=b[j]; } } for(int j=0;j<M+1;j++) { b[j]=a[j]; } } /* for(int i=0;i<N;i++) { cout<<endl; for(int j=0;j<M+1;j++) { cout<<a[i][j]<<" "; } }*/ cout<<a[M]; return 0; }