#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n,v[100],w[100],W,dp[100][1000];
int solve(){
for(int i=n-1;i>=0;i--){
for(int j=0;j<=W;j++){
// if(j==0) dp[i][j]=0;
if(w[i]>j) dp[i][j]=dp[i+1][j];
else dp[i][j]=max(dp[i+1][j],dp[i+1][j-w[i]]+v[i]);
}
}
return dp[0][W];
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>w[i]>>v[i];
}
cin>>W;
memset(dp,0,sizeof(dp));
cout<<solve();
return 0;
}
/*dp[n,j]=0;
dp[i,j]=dp[i+1,j];(w[i]>j)
dp[i,j]=max( dp[i+1,j], dp[i+1,j-w[i]]+v[i])
*/
01背包dp
最新推荐文章于 2024-03-10 20:58:35 发布