确定最佳背包解决方案中的元素
给定的背包算法有效地计算装箱问题的最优值。然而,当前的任务是确定构成此最佳解决方案的元素。
1.跟踪选择:
计算出 dp 矩阵中的最优值后,我们可以回溯以确定所选元素。
dp_copy = dp; // Copy the dp matrix for backtracking int weight_idx = W; int item_idx = n; while (weight_idx > 0 && item_idx > 0): if dp_copy[weight_idx][item_idx] != dp_copy[weight_idx - items[item_idx - 1].getWeight()][item_idx - 1]: // Element 'item_idx' is included in the optimal solution weight_idx -= items[item_idx - 1].getWeight() item_idx -= 1
2.伪代码解释:
3.复杂度:
这种回溯方法需要 O(W * n) 时间复杂度,其中 W 是袋子容量,n 是物品数量。它遍历矩阵中的每个单元一次并执行恒定时间搜索操作。
以上是如何高效确定最佳背包方案中包含的物品?的详细内容。更多信息请关注PHP中文网其他相关文章!