int main(int argc, char *argv[]) { OptimalBST(p, q, N); print_preorder(1, N); printf("\n"); return 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; }