#include<iostream> #include<vector> using namespace std; struct thing{ int val; int vol; }; int main(){ int v,n; cin>>v>>n; int i,j; thing temp; vector<thing> t; for(i=0;i<n;i++){ cin>>temp.vol>>temp.val; t.push_back(temp); } int dp[n+1][v+1]; for(i=0;i<=n;i++) for(j=0;j<=v;j++){ dp[i][0]=0;} //先种类再体积 for(i=1;i<=n;i++){ for(j=1;j<=v;j++){ if(t[i].vol>j){ dp[i][j]=dp[i-1][j]; } else dp[i][j]=max(dp[i-1][j-t[i].vol]+t[i].val,dp[i-1][j]); } } cout<<dp[n][v]<<endl; }
全部评论
(1) 回帖