SDUT OJ 2783 小P寻宝记
#include<iostream> #include<memory.h> #define N 10020 using namespace std; int dp[N],pi[N],wi[N]; int max(int a,int b) { return a>b?a:b; } int main() { int n,v,i,j; while(cin>>n>>v) { memset(dp,0,sizeof(dp)); memset(pi,0,sizeof(pi)); memset(wi,0,sizeof(wi)); for(i=0;i<n;i++) cin>>pi[i]>>wi[i]; for(i=0;i<n;i++) for(j=v;j>=pi[i];j--) dp[j]=max(dp[j],dp[j-pi[i]]+wi[i]); cout<<dp[v]<<endl; } return 0; }