已知常规二维动态规划求解01背包的核心代码如下:
int dp[1005][1005] = {0};
for(int i = 1; i <= n; i++){
for(int j = 0; j <= V; j++){
if(j < w[i]) dp[i][j] = dp[i-1][j];
else dp[i][j] = max(dp[i-1][j], dp[i-1][j - w[i]] + v[i]);
}
}
其中w为物品重量数组,v为物品价值数组,V为背包总容量,n为物品总数。若将该二维DP数组优化为一维数组实现,以下优化后的代码正确的是: