代码如下:
#include <stdio.h>
#define M 7
#define MAX 99999
int C[M][M];
int MATCHAIN(int *num,int length);
int main(void)
{
int num[] = {2,3,6,4,2,7};
int length = (int)(sizeof(num)/sizeof(int));
printf("%d\n",MATCHAIN(num,length));
return 0;
}
int MATCHAIN(int *num,int length)
{
int i=0,j=0,k=0,d=0;
for(i=0;i<length;i++)
C[i][i] = 0;
for(d=1;d<=length-1;d++)
{
for(i=0;i<=length-d;i++)
{
j = i+d;
C[i][j] = MAX;
for(k=i+1;k<=j;k++)
{
C[i][j] = C[i][j]<(C[i][k-1]+C[k][j]+num[i]*num[k]*num[j+1])?C[i][j]:(C[i][k-1]+C[k][j]+num[i]*num[k]*num[j+1]);
}
}
}
return C[0][length-2];
}