Python 实现最优二叉查找树:计算平均搜索结点访问数
解析:首先需要计算每个关键字和虚拟键的搜索概率之和,然后根据这些概率构建最优二叉查找树,最后计算平均搜索每个结点的访问结点数的值。 代码如下: ```python def optimal_bst(p, q): n = len(p) m = [[0] * (n + 1) for _ in range(n + 2)] w = [[0] * (n + 1) for _ in range(n + 1)] for i in range(1, n + 2): m[i][i - 1] = q[i - 1] w[i - 1][i - 1] = q[i - 1] for l in range(1, n + 1): for i in range(1, n - l + 2): j = i + l - 1 m[i][j] = min([m[i][r - 1] + m[r + 1][j] for r in range(i, j + 1)]) + sum(p[i - 1:j]) w[i][j] = w[i][r - 1] + p[r - 1] + w[r + 1][j] for r in range(i, j + 1): if m[i][j] == m[i][r - 1] + m[r + 1][j] + sum(p[i - 1:j]): break return m[1][n], w[1][n] / m[1][n] p = list(map(float, input().split())) q = list(map(float, input().split())) _, result = optimal_bst(p, q) print("{:.2f}".format(result)) ``` 输入样例: ``` 0.15 0.1 0.05 0.1 0.2 0.05 0.1 0.05 0.05 0.05 0.1 ``` 输出样例: ``` 一个实数,保留两位小数结果值。 ``` ######[AI写代码神器 | 526点数解答 | 2024-06-09 02:46:12]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)460
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- 1 秒 300 次访问,系统压力究竟大不大?关键因素全揭秘!(讯飞星火 | 272点数解答 | 2024-02-04 16:02:32)378
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)416
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)408
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)313
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)391
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)416
- Java调用Python接口中文乱码问题:字符编码统一解决方案(讯飞星火 | 344点数解答 | 2024-06-06 17:19:55)528
- 解决Java调用Python接口时中文值乱码问题:设置字符编码为UTF-8(讯飞星火 | 264点数解答 | 2024-06-06 17:27:09)392
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)70
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)26