Arrays 将非负值数组拆分为尽可能多的组,每个组的总和>;=给定值
例如,如果我们有一个数组[4,1,2,5,2,3],最小组和为5 则以下分组符合要求: [1,2,4],[2,3],[5] 我认为这是我们能做的最好的了,也就是说,我们不能在不打破限制的情况下将数组分成4个或更多的组 我能想到的这个问题的解决方案是首先对数组进行排序,然后从最大值开始处理数组Arrays 将非负值数组拆分为尽可能多的组,每个组的总和>;=给定值,arrays,algorithm,Arrays,Algorithm,例如,如果我们有一个数组[4,1,2,5,2,3],最小组和为5 则以下分组符合要求: [1,2,4],[2,3],[5] 我认为这是我们能做的最好的了,也就是说,我们不能在不打破限制的情况下将数组分成4个或更多的组 我能想到的这个问题的解决方案是首先对数组进行排序,然后从最大值开始处理数组 如果大于等于最小值,则它已构成一个组 如果小于最小值,请首先将其注册到临时组中,然后查看排序数组的另一端。从尚未分组的最小值开始,我们反复向组中添加值,直到组和等于或大于最小值 重复上述两个步骤,直到不再
- 如果大于等于最小值,则它已构成一个组
- 如果小于最小值,请首先将其注册到临时组中,然后查看排序数组的另一端。从尚未分组的最小值开始,我们反复向组中添加值,直到组和等于或大于最小值
- 重复上述两个步骤,直到不再消耗任何元素,即所有剩余元素的总和小于最小值。作为最后一步,我们将所有这些元素添加到任何现有组中
我想知道我的解是正确的还是其他任何有效的解(最好是在多项式时间内)。对于数组[2,3,4,4,5]和组和=9,你的算法会做什么?很好的例子。它确实不起作用,因为它最终将是一个1组分区。