资源简介
设S=(x1,x2,…,xn)是有序集,且x1<x2<…<xn,已知键值和区间的存取概率分布为(a0,b1,a1,b2,…,bn,an),其中ai表示相应区间的搜索概率,bi表示相应键值的搜索概率。在所有表示有序集的二叉树中找出一棵具有最小平均路长的二叉搜索树
代码片段和文件信息
#include
float w[100][100] min[100][100];
int head[100][100] n;
void optimalBinarySearchTree (float a[] float b[])
{
for (int i = 0; i <= n; i++)
{
w[i + 1][i] = a[i];
min[i + 1][i] = 0;
head[i + 1][i] = 0;
}
for (int r = 0; r < n; r++)
for (int i = 1; i <= n - r; i++)
{
int j = i + r
ihead = head[i][j - 1] > i ? head[i][j - 1] : i
jhead = head[i + 1][j] > i ? head[i + 1][j] : j;
w[i][j] = w[i][j - 1] + a[j] + b[j];
min[i][j] = min[i][ihead - 1] + min[ihead + 1][j];
head[i][j] = ihead;
for (int k = ihead + 1; k <= jhead; k++)
{
float temp = min[i][k - 1] + min[k + 1][j];
if (temp <= min[i][j])
{
min[i][j] = temp;
head[i][j] = k;
}
}
min[i][j] += w[i][j];
}
}
void in_traversal (int left int right)
相关资源
- c语言关键字汇总
- C语言实现ARP攻击
- 用C语言写的坡度算法
- c语言实现找零钱问题
- C语言课程设计-汉诺塔的演示
- C语言C++通用自定义log打印函数
- 基于c语言的图书管理系统毕业论文
- c语言 图书管理系统87261
- C语言实现心跳包Heart Beat
- Modbus源码(PIC单片机版)
- 表达式求值C语言实现
- 井字棋用C语言写的源代码
- C语言画图程序代码
- 矩阵运算C语言实现
- Yuneec ST24解码器C语言源码
- 最新快速傅里叶计算,C语言的FFT程序
- c语言矩阵运算程序
- 纯C语言实现工资管理系统
- c语言实现获取文件的md5哈希值
- C语言求first集sellect集follow集
- C语言编程规范个人规约
- 51单片机驱动步进电机(含电路图和
- C语言课程设计—运动会管理系统(
- c语言课程设计 简易通讯录 源代码
- 文件系统c语言实现,在linux下编译
- B树 C语言实现
- 湖南大学C语言程序设计考研试题
- 贪心法解决背包问题c语言代码
- linux下用C语言实现寻找1到1亿内的素数
- C语言课程设计--商场商品信息管理系
评论
共有 条评论