我们有n(1~10000)个旅行背包,每个包有一个尺寸(1~1000000),小包可以装在大包里面,请你给出一种嵌套方案,尽可能地将小包放在大包里,使得最后的复合背包尽量少,在次前提下,使得嵌套层数的最大值尽量的小。
解决:
可以看作是给背包分成若干组,每一组不存在尺寸相同的两个背包。
先统计一下不同尺寸的背包各有多少个,假设个数最多的一种背包有k个,不难证明,如果把k作为背包分组的组数,它是不多不少的,最少k组,最多也是k组。接着只需要按照背包尺寸从小到大的顺序把各个背包轮流、循环地放入1~k各个组中,这样的放法既是可行的,也会使得每一组的背包数量尽可能平均,从而使嵌套层数的最大值尽量小。
网友评论