Exemplo n.º 1
0
Arquivo: 2.c Projeto: ElvisKwok/code
int main(int argc, char *argv[])
{
    OptimalBST(p, q, N);
    print_preorder(1, N); 
    printf("\n");
    return 0;
}
Exemplo n.º 2
0
int main()
{
	int i,num;
	FILE *point;
	//所有数据均从2.txt中获取,
	//2.txt中第一个数据表示节点个数;
	//从第二个数据开始表示各个节点的概率
	point=fopen("2.txt","r");
	if(point==NULL)
	{
		printf("cannot open 2.txt.\n");
		exit(-1);
	}
	fscanf(point,"%d",&num);
	printf("%d\n",num);
	float *p=(float*)malloc(sizeof(float)*(num+1));
	for(i=1;i<num+1;i++)
		fscanf(point,"%f",&p[i]);
	//创建主表;
	float **c=(float**)malloc(sizeof(float*)*(num+2));
	for(i=0;i<num+2;i++)
		c[i]=(float*)malloc(sizeof(float)*(num+1));
	//创建根表;
	int **r=(int**)malloc(sizeof(int*)*(num+2));
	for(i=0;i<num+2;i++)
		r[i]=(int*)malloc(sizeof(int)*(num+1));
	//动态规划实现最优二叉查找树的期望代价求解。。
	OptimalBST(num,p,c,r);
	printf("该最优二叉查找树的期望代价为:%f \n",c[1][num]);
	//给出最优二叉查找树的中序遍历结果;
	printf("构造成的最优二叉查找树的中序遍历结果为:");
	OptimalBSTPrint(1,5,r);

	return 0;
}