求助大佬们,为什么第二重循环这样正着循环就错了???

回复帖子

@兀pai 2019-08-12 17:34 回复
#include<iostream>
using namespace std;
int n,v,c[34030],w[34030],dp[34030];
int main(){
    cin>>n>>v;
    for(int i=1;i<=n;i++)  cin>>c[i]>>w[i];
    for(int i=1;i<=n;i++){
        for(int j=c[i];j<=v;j++){
            dp[j]=max(dp[j],dp[j-c[i]]+w[i]);
        }
    }
    cout<<dp[v];
    return 0;
}
@linus_li 2019-08-30 23:02 回复 举报

正着会导致你前面用过的数再次加上去,而且因为动归的关系,你没法做标记

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。