微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 平衡分区问题,返回子组之间的最小总和被忽略的测试用例

如何解决Python 平衡分区问题,返回子组之间的最小总和被忽略的测试用例

在我的编程课中,我们被告知要找到给定数组的两个子组的最小总和。我认为手头的问题是平衡分区问题。我还没有打算优化我的代码,因为我无法清除任何隐藏的测试用例。这是我的代码

def minimize(all,group1,group2):
    if not all:
        return group1,group2

    curval = all[0]
    newall = all[1:]

    left = minimize(newall,group1 + [curval],group2)
    leftdiff = abs(sum(left[0]) - sum(left[1]))
    right = minimize(newall,group2 + [curval])
    rightdiff = abs(sum(right[0]) - sum(right[1]))

    if leftdiff <= rightdiff:
        return left
    else:
        return right

代码最初由下面的行调用输出

results = minimize(arr,[],[])
out = list(map(str,results[0])) + list(map(str,results[1]))
print(" ".join(out))

虽然我能够正确获得提供的示例测试用例的输出,但对于其他测试用例,我的代码打印出了错误的答案。样本测试用例为 I:(12 17 17 14) O:(12 17 17 14) I:(19 29 34 26) O:(19 34 29 26) I:(87 73 109 153 65 137) O:( 87 73 153 109 65 137)。问题的附加条件是数组的第一个值必须在第一个子组的第一个元素中。输入的长度始终为偶数且大于等于2。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。