在我的编程课上,我们被告知要找到给定数组的两个子组的最小和。我认为目前的问题是平衡分区问题。我还没有打算优化我的代码,因为我无法清除任何隐藏的测试用例。这是我的密码
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
目前没有回答
相关问题 更多 >
编程相关推荐