动态规划--最优二叉查找树(转载小妞滴。。。)

原创 2012年03月21日 13:39:19

 

import java.util.Arrays;

public class BestTree {
	public int n;
	public double w[][];
	public double c[][];
	public  int r[][];

	public BestTree(int n)
	{
		 c=new double[n+2][n+1];
		 w=new double[n+2][n+1];r=new int[n+2][n+1];
	}
public void OptionBinarySearch(int n,double p[],double q[]){
  for(int i=1;i<=n;i++){
   c[i][i-1]=0;
   w[i][i-1]=q[i-1];
  }                                                                                                                                                                                                                                                                      public void OptionBinarySearch(int n,double p[],double q[]){
  for(int i=1;i<=n;i++){
   c[i][i-1]=0;
   w[i][i-1]=q[i-1];
  }  
for(int k=n;k>=1;k--){
   for(int i=1;i<=k;i++){
    int j=i-k+5;
    w[i][j]=w[i][j-1]+p[j]+q[j];
    //当i<=j时,c[i,j)=W(i,j)+min{c(i,k-1)+c(k+1,j)}
    c[i][j]=w[i][j]+c[i][i-1]+c[i+1][j];
    r[i][j]=i;
for(int m=i+1;m<=j;m++){
     double t=w[i][j]+c[i][m-1]+c[m+1][j];
     
     if((float)t<(float)c[i][j]){//通过比较,让c[i][j]的值最小
      c[i][j]=t;
      r[i][j]=m;
     }
    }
   }
  }
 }
public void BestSolution(int r[][],int i,int j){
  if(i<=j)
  {
  System.out.println("s"+i+"和s"+j+" 的根为:"+"s"+r[i][j]);
  BestSolution(r,i,r[i][j]-1);
  BestSolution(r,r[i][j]+1,j);
  }
 }
public static void main(String[] args){
  double p[]={0,0.15,0.1,0.05,0.1,0.2};
  double q[]={0.05,0.1,0.05,0.05,0.05,0.1};
  BestTree tree=new BestTree(5);
  tree.n=5;
  tree.OptionBinarySearch(5,p,q);
 
     for(int i=1;i<=5;i++){
      System.out.println(Arrays.toString(tree.r[i]));
     }
  tree.BestSolution(tree.r, 1, 5);
 }
}

2016-2017学年第二学期C++第三章(2)

C++ 上机课参考答案 本系列文章供北京邮电大学信通院及数媒学院「C++高级程序语言设计」上机课学生参考。 C 上机课参考答案 2016-2017学年第二学期C第三章2 VC实验35 打点滴 VC...
  • u013594828
  • u013594828
  • 2017年04月30日 20:48
  • 2311

csdn如何转载别人的文章

csdn如何转载别人的文章
  • stonesing
  • stonesing
  • 2016年08月25日 17:07
  • 2089

csdn如何转载别人的文章

转载地址:http://blog.csdn.net/jiangping_zhu/article/details/18044109 1、找到要转载的文章,用chrome浏览器打开,右键选择审查元...
  • dlhlSC
  • dlhlSC
  • 2016年08月19日 16:51
  • 5063

油滴扩展 题解

油滴扩展(box) 【问题描述】 在一个长方形框子里,最多有N(0≤N≤6)个相异的点。在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界。必须等一个油滴...
  • w19960702123
  • w19960702123
  • 2014年10月20日 17:02
  • 1180

csdn如何转载别人的文章

##转载于:http://blog.csdn.net/jiangping_zhu/article/details/18044109 ##作者:包心菜加糯米饭 1、找到要转载的文章,用chrome浏览...
  • mzpmzk
  • mzpmzk
  • 2016年05月24日 10:56
  • 11856

csdn如何转载别人的文章

对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然...
  • Bleachswh
  • Bleachswh
  • 2016年12月19日 11:08
  • 1508

如何快速转载CSDN中的博客

前言  对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里...
  • bolu1234
  • bolu1234
  • 2016年07月09日 15:59
  • 12186

CSDN怎么转载别人的博客

以最新的google为例,来说说我们在阅读csdn遇到别人的好文章转载的办法; 首先,我们找到别人的博客,使用F12审查元素,如下: 找到article_content之后,鼠标右键,按照...
  • ILV_XJ
  • ILV_XJ
  • 2017年05月24日 16:07
  • 255

P1378 油滴扩展

https://www.luogu.org/problem/show?pid=1378 思路简单的搜索题。 但是!这题真的是让我挠心啊! 请看注释的那两行,为什么!!(表示被这样坑了一天)#in...
  • qq_36820605
  • qq_36820605
  • 2017年08月07日 11:03
  • 130

csdn如何转载博客

1、找到要转载的文章,用chrome浏览器打开,右键选择审查元素 2、在chrome中下方的框里找到对应的内容,html脚本中找到对应的节点,选中节点,网页上被选中内容会被高亮显示,然后右键菜单选中...
  • sddxqlrjxr
  • sddxqlrjxr
  • 2015年11月15日 19:12
  • 2935
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态规划--最优二叉查找树(转载小妞滴。。。)
举报原因:
原因补充:

(最多只允许输入30个字)