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 (将#修改为@)