解析:首先需要计算每个关键字的搜索概率,然后根据这些概率构造一棵最优二叉查找树,最后输出平均搜索每个结点的访问结点数的值。 代码如下: ```python def optimal_bst(p, q): n = len(p) f = [[0] * (n + 2) for _ in range(n + 2)] w = [[0] * (n + 2) for _ in range(n + 2)] for i in range(1, n + 1): w[i][i] = p[i - 1] for j in range(i + 1, n + 2): w[i][j] = w[i][j - 1] + p[j - 2] for l in range(2, n + 2): for i in range(1, n + 2 - l): j = i + l f[i][j] = float('inf') for r in range(i, j): f[i][j] = min(f[i][j], f[i][r] + f[r + 1][j] + w[i][j]) return f[1][n + 1] / (sum(p) + sum(q)) p = list(map(float, input().split())) q = list(map(float, input().split())) result = optimal_bst(p, q) print("{:.2f}".format(result)) ``` 输入样例: ``` 15 0.1 0.05 0.1 0.2 0.05 0.1 0.05 0.05 0.05 0.1 ``` 输出样例: ``` 一个实数,保留两位小数结果值 ``` [2024-06-09 16:12:27 | AI写代码神器 | 450点数解答]