写一个C语言程序实现给定标识符集(a1, a2, …an),这些字符的下标从1开始按自然序编号,pi是对ai成功检索的概率, qi是不成功检索的概率, 且∑(1<=i<=n)pi +∑(0<=i<=n)qi =1,问:它的最优二分检索树是怎样的? 输入格式: 第1行是n,表示字符个数; 第2行是这n个字符的成功检索概率pi, 0<pi<1; 第3行是失败检索概率qi,0<qi<1,且∑(1<=i<=n)pi +∑(0<=i<=n)qi =1。 输出格式: 最优二分检索树先根遍历时得到的字符编号序列。 输入样例1: 4 0.1875 0.1875 0.0625 0.0625 0.125 0.1875 0.0625 0.0625 0.0625 输出样例1: 2 1 3 4
时间: 2024-04-22 09:22:40 浏览: 102
去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符
这是一个经典的动态规划问题,可以使用动态规划求解最优二分检索树。
具体的思路是,首先对于每一个子树,我们计算出其所有节点的概率之和,然后根据这个概率之和来计算其对应的最小代价。由于最终的二分检索树的根节点可能是任何一个节点,我们需要对于每一个可能的根节点都进行一次计算,并选取其中代价最小的一颗子树作为最终的答案。
具体的实现可以参考下面的 C 语言代码:
阅读全文