匿名用户
1级
2008-02-22 回答
#define MAXINT 1000000001L
#include
void main()
{
long *m;
int *s;
int mtrx[6][2]={{30,35},{35,15},{15,5},{5,10},{10,20},{20,25}};
int i,j,no;
m=malloc(36*sizeof(long));
s=malloc(36*sizeof(int));
mmo(mtrx,6,m,s);
for(i=0;i<6;i++)
{
printf("\n");
for(j=0;j<6;j++)
{
no=j*6+i;
if(i<=j)
{
printf("%10ld",m[no]);
}
else
{
printf(" ");
}
}
}
getch();
}
int mmo(int *mtrx,int n,long *m,int *s)
{
int i,j,k,l,no;
long q;
for(i=0;i
{
m[i*n+i]=0L;
}
/* matrices range from 2 to n.*/
for(l=2;l<=n;l++)
{
/*Do with all m[i,x].*/
/*C array is 0-based.*/
for(i=0;i<=n-l;i++)
{
j=i+l-1;
m[j*n+i]=MAXINT;
/*All cut positions.*/
for(k=i;k
{
q=m[k*n+i]+m[j*n+k+1]+mtrx[i+i]*mtrx[k+k+1]*mtrx[j+j+1];
no=j*n+i;
if(q
{
m[no]=q;
s[no]=k;
}
}
}
}
}