注意区分与01背包的不同,v的遍历为正向遍历。 for(int i=1;i<=n;i++) { for(int v=w[i];v<=V;v++) { dp[v]=max(dp[v],dp[v-w[i]]+c[i]); } }