for(int i=1; i<=n; i++){ for(int j=weight[i]; j<=V; j++){ dp[i][j] = max(dp[i][j], dp[i-1][j-weight[i]]+value[i]); } } int now=1, pre = 0; for(int i=1; i<=n; i++){ for(int j=weight[i]; j<=V; j++){ dp[now][j] = max(dp[now][j], dp[pre][j-weight[i]]+value[i]); } //,,,, } for(int i=1; i<=n; i++){ for(int j=V; j>=weight; j--){ dp[j] = max(dp[j], dp[j-weight[i]]+value[i]); } }