int FindMinCost(int arr[],int i,int j){


if(i==j){
return 0;
}

int k;

int min=INT_MAX;
int result;

for(k=i;k<j;k++){
result=FindMinCost(arr,i,k)+FindMinCost(arr,k+1,j)+arr[i-1]*arr[k]*arr[j];
if(min>result){
min=result;
}
}

return result;


}
Exemple #2
0
void Prim(Graph *G)
{
    int n,t,i = 0;
    CLOSSET[0] = 1;
    Updatelowcost(G);
    CLOSSET[G->nodeN]++;
    while(CLOSSET[G->nodeN]<G->nodeN)
    {
        n = FindMinCost(G);
        t = NODESET[n];
        edgeSet[i].v1 = n;
        edgeSet[i++].v2 = t;
        printf("%c-%c\n",G->data[n],G->data[t]);
        s += LOWCOST[n];
        CLOSSET[t] = 1;
        CLOSSET[G->nodeN]++;
        Updatelowcost(G);
    }
}