Python练习题给出错误答案

时间:2019-10-14 08:25:22

标签: python

发现违反规定,不能删除

2 个答案:

答案 0 :(得分:0)

没有理由使用set()。您应该只对分隔线前后的数字求和。

您应该将苹果的数量与篮子的数量放在一个单独的列表中,这样就不必跳过列表的第一个元素。而且您无需复制然后删除内容,只需使用原始列表的一部分即可。

with open("jagasis.txt") as f:
    count = int(f.readline().strip())
    baskets = [int(strip(x)) for x in f]
sums = []
for x in range(1, count-1):
    left = sum(baskets[:x])
    right = sum(baskets[x:])
    sums.append(abs(left - right))
result = index(min(sums)) + 1
with open("jagaval.txt", "w") as f:
    f.write(str(result))

这不是最有效的算法,它是O(n**2)。一种更有效的算法实现了,每当您将分界线向右移动时,分界线处的元素就会添加到左侧总和中,并从右侧总和中减去。因此,如果这是一场编码竞赛,则应使用该算法,否则可能会由于超出时间限制而失败。

答案 1 :(得分:0)

我只想补充一下,如果您下次添加了对您不起作用的内容,那会很好,因为很多事情可能都不在“起作用”。干杯。