最优二叉搜索树问题
来源:互联网 发布:ubuntu vsftpd安装 编辑:程序博客网 时间:2024/06/06 09:26
java实现:
public class 最优二叉搜索树问题 {public static void main(String[] args) {// TODO Auto-generated method stubdouble p[] = {0,0.15,0.10,0.05,0.10,0.20};double q[] = {0.05,0.10,0.05,0.05,0.05,0.10};double p1[] = {0,0.04,0.06,0.08,0.02,0.10,0.12,0.14};double q1[] = {0.06,0.06,0.06,0.06,0.05,0.05,0.05,0.05};Optimal_BST(p, q, p.length-1);System.out.println();Optimal_BST(p1, q1, p1.length-1);}public static void Optimal_BST(double p[], double q[],int n) {double e[][] = new double[n+2][n+1];double w[][] = new double[n+2][n+1];int root[][] = new int[n+1][n+1];for(int i = 1; i<= n+1; i++) {e[i][i-1] = q[i-1];w[i][i-1] = q[i-1];}for(int l = 1; l <= n; l++) {for(int i = 1; i<= n-l+1; i++) {int j = i+l-1;e[i][j] = 1e9;w[i][j] = w[i][j-1] + p[j] + q[j];for(int r = i; r<=j; r++) {double 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;}}}}System.out.println(e[1][n]);construct_optimal_BST(root, 1, n);}//打印树根public static void construct_optimal_BST(int root[][], int i, int j) {if(i>j || root[i][j] == 0) {return ;}else {int r = root[i][j];System.out.print(r+" ");construct_optimal_BST(root, i, r-1);construct_optimal_BST(root, r+1, j);}}}
阅读全文
0 0
- 最优二叉搜索树问题
- 最优二叉搜索树问题
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- C++ 最优二叉搜索树
- 最优二叉搜索树1
- 最优二叉搜索树2
- 最优二叉搜索树(java)
- 动态规划-最优二叉搜索树
- 动态规划--最优二叉搜索树
- 焦点图 动态轮播无缝滚动 仿小米官网
- selenium模拟登陆时截取验证码
- TLS/SSL 协议详解 (26) https访问告警问题总结
- 前端01
- 跨域总结
- 最优二叉搜索树问题
- 圣杯布局 和 双飞翼布局 以及 全局布局的方式
- Java代码 死锁
- JVM内存区域详解
- proxool详细配置
- 听说2017你想写前端?
- mac运行lomboz提示unable to locate its companion shared library错误
- 框架学习的链接
- IDEA破解 2017 IDEA license server 激活