You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Project Euler第67题代码出错:结果偏大,请求排查修复

Project Euler第67题代码修复问题

我正在求解Project Euler第67题,此前解决第18题的代码无法正常运行,得到结果7320,而正确答案应为7273。我无法定位问题根源,希望了解需要修改代码的哪些部分以修复问题。

numbers =[
[59],
#...
]

sums = [
[59],
#...
]

# 单独处理前两行,因为主算法里搞不定这部分
i = 0
x = 1
for y in range(0, len(numbers[x])):
    for a in range(0, len(numbers[x - 1])):
        temp1 = numbers[i][a] + numbers[x][y]
        sums[x].append(temp1)
        print(sums)


# 代码逻辑大致是把大三角形拆成小三角形,逐行累加求和

for x in range(1, len(sums) - 1):


# bad数组用来存储两个三角形重叠时的较小和值
    bad = []


# 计算小三角形的和,存入和数字数组尺寸相同的二维数组中
    for y in range(0, len(sums[x])):
        temp1 = sums[x][y] + numbers[x + 1][y]
        sums[x + 1].append(temp1)
        temp1 = sums[x][y] + numbers[x + 1][y + 1]
        sums[x + 1].append(temp1)


# 这里用bad数组处理重叠三角形,剔除较小的和值
    for i in range(1, len(sums[x + 1]) - 2, 2):
        if sums[x + 1][i] >= sums[x + 1][i + 1]:
            a = sums[x + 1][i + 1]
            bad.append(a)
        if sums[x + 1][i + 1] > sums[x + 1][i]:
            a = sums[x + 1][i]
            bad.append(a)

# 从最终数组中移除所有存入bad的较小和值
    for y in range(0, len(bad)):
        for z in range(0, len(sums[x + 1]) - 1):
            if sums[x + 1][z] == bad[y]:
                sums[x + 1].pop(z)
                break

# 到达三角形底部后,输出最大可能的和值
maximum = 0
for x in range(0, len(sums[-1])):
    if sums[-1][x] > maximum:
        maximum = sums[-1][x]
        
print(maximum)

注:numbers和sums数组的完整内容较多,此处仅展示结构。

内容的提问来源于stack exchange,提问作者DSazykin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:40:27