poj3624 Charm Bracelet DP 01背包问题
题目链接:http://poj.org/problem?id=3624
01背包问题,接触DP的第一题。
1 ///2014.4.10 2 ///poj3624 3 4 #include <iostream> 5 #include <cstdio> 6 #include <cstring> 7 using namespace std; 8 9 int N,M; 10 int w[3500],c[3500]; 11 int f[13500]; 12 13 int main() 14 { 15 // freopen("in","r",stdin); 16 // freopen("out","w",stdout); 17 18 cin>>N>>M; 19 for(int i=1 ; i<=N ; i++){ 20 cin>>c[i]>>w[i]; 21 } 22 memset(f,0,sizeof(f) ); 23 for(int i=1 ; i<=N ; i++){ 24 for(int j=M ; j>=1 ; j--){ 25 int a; 26 if( j-c[i]>=0 ) 27 a = f[j-c[i]]+w[i]; 28 else 29 a = 0; 30 f[j] = f[j]>a? f[j]:a; 31 } 32 } 33 cout<<f[M]<<endl; 34 return 0; 35 }