robin88 • 11个月前
using namespace std; int dp[2][1000000]={0}; int weight[100]={0},value[100]={0}; int main(int argc, char** argv) {
int m,n;
cin>>m>>n;
for (int i = 1; i <=m; i++) {
cin>>weight[i];
}
for (int i = 1; i <=m; i++) {
cin>>value[i];
}
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(j<weight[i]){
dp[1][j]=dp[0][j];
}
else{
dp[1][j]=max(value[i]+dp[0][j-weight[i]], dp[0][j]);
}
}
for(int j=1;j<=n;j++)
{
dp[0][j]= dp[1][j];
}
}
cout<<dp[1][n];
return 0;
}
评论:
请先登录,才能进行评论