⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 obst.cpp

📁 Optimal binary search tree
💻 CPP
字号:

#include<stdio.h>
#include<conio.h>
main()
{
int n,i,j,d,k,R[100][100],kmin,s;
float P[100],A[100][100],minval,sum;



clrscr();


printf("Enter Nunber of keys : ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\nEnter probability of key %d : ",i+1);
scanf("%f",&P[i]);
}



for(i=0;i<=n;i++)
{
 for(k=0;k<=n;k++)
 {
 A[i][k]=0.0;
 R[i][k]=0;
 }
}


for(i=0;i<n;i++)
{
A[i][i]=0;
//printf("\n%f",A[i][i]);
A[i][i+1]=P[i];
//printf("\n%f",A[i][i+1]);
R[i][i]=i;
//printf("\n%d",R[i][i]);
}


A[i+1][i+1]=0;

printf("\n\n\n");

for(i=0;i<n;i++)
{
printf("\t%3.2f",P[i]);
}

printf("\n\n");

for(i=0;i<=n;i++)
{
 for(k=0;k<=n;k++)
 {
 printf("\t%3.2f",A[i][k]);

 }
printf("\n");

}
///////////////////////////////////////////////////

for(d=1;d<n-1;d++)
{
for(i=1;i<n-d;i++)
  {
    j=i+d;
    minval=1000.0;
    for(k=i;k<=j;k++)
    { if ((A[i-1][k-1]+A[k][j])<minval )
	 { minval=A[i-1][k-1]+A[k][j];
	  kmin=k;}


     }
     R[i][j]=kmin;
     sum=P[i-1];
     for(s=i;s<j;s++)
     {
      sum=sum+P[s];
     }
   A[i-1][j]=minval+sum;

  }

}

//////////////////////////////////////////////////////////

printf("\n\n");

for(i=0;i<=n;i++)
{
 for(k=0;k<=n;k++)
 {
 printf("\t%3.2f",A[i][k]);

 }
 printf("\n");

}


getch();
return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -