算法导论 最优搜索树
来源:互联网 发布:机锋市场 淘宝店 编辑:程序博客网 时间:2024/05/09 16:58
算法参考算法导论第二版——最优搜索树
#include<iostream>
#define EType int
#define MAX numeric_limits<double>::max()
using namespace std;
void Construct_Optimal_BST(int **root,int i,int j,bool flag);
void OPTIMAL_BST(double p[],double q[], int n)
{
double **e,**w;
int **root;
e = new double*[n+2];
w = new double*[n+2];
e[0] = new double[(n+2)*(n+2)];
w[0] = new double[(n+2)*(n+2)];
root = new int*[n+1];
root[0] = new int[(n+1)*(n+1)];
for(int i = 1; i < n+2; ++i)
{
e[i][i-1] = q[i-1];
w[i][i-1] = q[i-1];
e[0][i-1] = 0;
w[0][i-1] = 0;
}
for(int i = 1; i< (n+2); ++i)
for(int j = 1; j< (n+2); ++j)
root[i][j] = 0;
for(int l = 1; l<=n; ++l)
for(int i = 1; i <= n-l+1; )
{
int j = i+l-1;
e[i][j] = MAX;
w[i][j] = w[i][j-1] + p[j] + q[j];
for(int r = i; r<= j; ++r)
{
int t = e[i][r-1] + e[r+1][j] + w[i][j];
if(t<e[i][j])
{
e[i][j] = t;
root[i][j] = r;
}
}
}
Construct_Optimal_BST(root,1,n,false);
}
void Construct_Optimal_BST(int **root,int i,int j,bool flag)
{
if(flag==0)
{
cout<<"k"<<root[i][j]<<" 是根"<<endl;
flag=1;
}
int r=root[i][j];
//如果左子树是叶子
if(r-1<i)
{
cout<<"d"<<r-1<<" is the left child of "<<"K"<<r<<endl;
}
//如果左子树不是叶子
else
{
cout<<"k"<<root[i][r-1]<<" is the left child of "<<"K"<<r<<endl;
Construct_Optimal_BST(root,i,r-1,1);
}
//如果右子树是叶子
if(r>=j)
{
cout<<"d"<<j<<" is the right child of "<<"K"<<r<<endl;
}
//如果右子树不是叶子
else
{
cout<<"k"<<root[r+1][j]<<" is the right child of "<<"K"<<r<<endl;
Construct_Optimal_BST(root,r+1,j,1);
}
}
- 算法导论 最优搜索树
- 【算法导论】最优二叉搜索树
- 算法导论-----------------最优二叉搜索树
- 【算法导论】最优二叉搜索树
- 算法导论--最优二叉搜索树
- 算法导论 最优二叉搜索树
- 动态规划之最优二叉搜索树(算法导论)
- 【算法导论】动态规划之“最优二叉搜索树”
- 算法导论 15章(1)最优二叉搜索树
- 算法导论之动态规划:最优二叉搜索树
- 最优二叉搜索树(Optimal BST)-算法导论
- 算法导论程序39--最优二叉搜索树(Python)
- 算法导论-第15章-动态规划-15.4 最优二叉搜索树
- 算法导论:第15章 动态规划_5最优二叉搜索树
- 算法导论第十五章15.5-2构造最优二叉搜索树
- 算法导论 最优二叉查找树
- 最优二叉查找树 算法导论216
- 算法导论15.5 最优二叉查找树
- zoj 2625 Rearrange Them 动态规划
- Intent 和 Intent Filter
- poj 2486 Apple Tree(经典树形DP)
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中
- (poj1.3.2)1791(构造法模拟)
- 算法导论 最优搜索树
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来
- 黑马程序员--Java数组
- Java 排序实现
- vsftp功能分析及虚拟用户服务
- Java通道方法写文件中缓冲区建立的原则
- poj 3162(dfs+单调队列)
- Uva 562 背包DP
- c++命名空间三种实现文件的区别