将一组数字最多划分为K个组,以使组总和的最大值最小化

时间:2019-05-29 08:50:47

标签: algorithm dynamic-programming backtracking partition

给定一个非负数的列表,我们可以将这些数最多划分为<script type="text/javascript"> $.ajax({ type: 'post', url: 'process.php', data: {postantNum: antNum, postantRate: antRat}, success: function(result){ console.log(result); } }); </script> 个组。我们取每个组的总和,然后取这些总和的最大值,并希望最小化最大和。

K

由于我们可以在每组中输入一个数字,因此边缘情况为f: (nums: List[int], K: int) -> int For example: Given nums = [1,2,4,5,7,8], K = 3. Result is 9. Since groups = [[1,8],[2,7],[4,5]], max(1+8,2+7,4+5) = 9

K >= len(nums)

[解决方案]如评论中所述,此问题与重复提到的问题之间有细微的差别,因此我在下面编写了解决方案。

def partition(nums: List[int], K: int) -> int:
    '''\
        len(nums) >= 1, nums[i] >= 0, K > 0
        we partition nums into groups, len(groups) <= K  
        we wish to minimize max(map(sum, groups))  
    '''
    if K >= len(nums):
        return max(nums)


0 个答案:

没有答案