题目链接:http://poj.org/problem?id=3624

 

#include<iostream>
#include<fstream>
#include<cstring>
using namespace std ;
int n, m ;
int w[4000], d[4000] ;
int dp[20000] ;
int max(int a, int b){
    if(a>b) return a ;
    else return b ;
}
int main(){
    //fstream cin("x.in") ;
    cin >> n >> m ;
    memset(dp, 0sizeof(dp)) ;
    for(int i=0; i<n; i++)
        cin >> w[i] >> d[i] ;
    for(int i=0; i<n; i++)
        for(int j=m; j>=w[i]; j--)
            dp[j] = max(dp[j], dp[j-w[i]] + d[i]) ;
    cout << dp[m] << endl ;
    return 0 ;
}

 

posted on 2011-09-24 11:50  追逐.  阅读(195)  评论(0编辑  收藏  举报