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

2024-10-16 17:17:28 发布

您现在位置: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, group1, 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:(12171714)O:(121714)I:(19293426)O:(1934226)I:(877310915365137)O:(877315310965137)。问题的附加条件是数组的第一个值必须位于第一个子组的第一个元素中。输入的长度始终为偶数且大于或等于2


Tags: 代码rightreturn测试用例数组allleftresults