错误版:
for( int i=1; i <= p; i++ ){
for( int j=1; j <= w; j++ ){
if( j-pri2[i] >= 0 )
dp[i][j] = max( dp[i-1][j] , dp[i-1][j-pri2[i]]+wea2[i] );
else
dp[i][j] = dp[i-1][j];
}
}
优化版:
for( int i=1; i <= p; i++ ){
for( int j=w; j >= 1; j-- ){
if( j-pri2[i] >= 0 )
dp[j] = max( dp[j] , dp[j-pri2[i]]+wea2[i] );
}
}
仅供参考