20分错误:
for(int j=m;j>=w[i];j--){
dp[j]=max(dp[j]+v1[i],dp[j-w[i]]+v2[i]);
}
没有药了也能有失败经验
40分错误:
for(int i=1;i<=n;i++){
for(int j=m;j>=1;j--){
if(j>=w[i])dp[j]=max(dp[j]+v1[i],dp[j-w[i]]+v2[i]);
else dp[j]+=v1[i];
}
}
0颗药也可以,第二层循环要到0
40分错误2:
for(int i=1;i<=n;i++){
for(int j=m;j>=1;j--){
dp[j]+=v1[i];
if(j>=w[i]) dp[j]=max(dp[j],dp[j-w[i]]+v2[i]);
}
}
有时0颗药也能胜利,失败会加两次
100分:
for(int i=1;i<=n;i++){
for(int j=m;j>=1;j--){
if(j>=w[i]) dp[j]=max(dp[j]+v1[i],dp[j-w[i]]+v2[i]);
else dp[j]+=v1[i];
}
}