这道题看似是搜索,但是可以用背包做。
题目要求求出最小的剩余空间,也就是要求出最大的可装重量
这样,我们可以将一个物体的重量当作它的价值,进而将题目转变为一个基本的 010101 背包问题:
有一个箱子容量为 VVV (正整数, 000 <= VVV <= 200002000020000 ),同时有 nnn 个物品( 000 < nnn <= 303030 ),每个物品有一 个体积(正整数)和一个价值(等于体积)。
要求 nnn 个物品中,任取若干个装入箱内,使总价值最大。
对于每一个物体,都有两种状态:装 与不装
那么,对于任意重量 mmm 的最大价值 fff ( mmm ) === maxmaxmax ( fff ( mmm −-− www [ iii ] ) +++ www [ iii ], fff ( mmm ) )( www 为重量(即价值))
其中, fff ( mmm −-− www [ iii ] ) 指在装了物品 iii 后,箱子的剩余容量能装的最大重量
fff ( mmm −-− www [ iii ] ) +++ www [ iii ] 指在在装了物品 iii 后,箱子能装的最大重量