在这个代码中,问题可能出在以下几个地方:

  1. 输入的参数不符合要求,比如keys和p的长度不一致。

  2. 在计算c和w数组的时候,下标超出了数组的范围。

针对第一个问题,我们可以检查一下输入的keys和p的长度是否一致。

针对第二个问题,我们需要注意循环中下标的取值范围是否符合要求,特别是在计算c和w数组时的下标。

以下是修改后的代码:

def optimal_bst(keys, p): n = len(keys) c = [[0 for _ in range(n)] for _ in range(n)] w = [[0 for _ in range(n)] for _ in range(n)]

for i in range(n):
    c[i][i] = w[i][i] = p[i]

for l in range(2, n + 1):
    for i in range(n - l + 1):
        j = i + l - 1
        w[i][j] = w[i][j - 1] + p[j]
        c[i][j] = float('inf')
        for k in range(i, j + 1):
            if k == i:
                t = c[k + 1][j] + w[i][j]
            elif k == j:
                t = c[i][k - 1] + w[i][j]
            else:
                t = c[i][k - 1] + c[k + 1][j] + w[i][j]
            if t < c[i][j]:
                c[i][j] = t

return c[0][n - 1]

if name == 'main': keys = [1, 2, 3, 4, 5] p = [0.1, 0.2, 0.3, 0.1, 0.3] print(optimal_bst(keys, p)

def optimal_bstkeys p n = lenkeys c = 0 for _ in rangen for _ in rangen w = 0 for _ in rangen for _ in rangen for i in rangen cii = wii = pi for l in range2 n + 1 for i in

原文地址: https://www.cveoy.top/t/topic/feB3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录