想知道这个矩阵连乘的最优解怎么加进去
还有那个下面那个二维数组 s[][]到底怎么看
#include<stdio.h>
#define N 20
int m[N][N]={0};
int s[N][N]={0}, p[N]={0};
void print(int a[N][N],int t)
{
int i,j;
for(i=0;i<t;i++)
{
for(j=0;j<t;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
int f(int i,int j)
{
int k;
if(m[i][j]>0)
return m[i][j];
if(i==j)
return 0;
int u;
// u=f(i,i)+f(i+1,j)+p[i-1]*p[i]*p[j];
u=99999 ;
//printf("first min : %d\n",u);
// s[i][j]=i;
//printf("切断位置:%d\n",i);
for( k=i;k<j;k++)
{
int t=f(i,k)+f(k+1,j)+p[i]*p[k+1]*p[j+1];
if(t<u)
{
u=t;
s[i][j]=k;
printf("s[i][j]:%d %d",s[i][j]);
printf("A%d) \n ",i);
printf("\n*****\n");
}
}
m[i][j]=u;
//printf("(A%d*A%d)\n",i,j);
//printf(" min : %d\n",u);
return u;
}
int main()
{
int n,n1,m1,i,j=2;
printf("please input the number of matrix");
scanf("%d",&n);
//char c[]={A0,A1,A2,A3,A4,A5,A5};
for(i=1;i<=n;i++)
{
printf("请输入第%d个矩阵的行和列(n1*m1 格式):",i);
scanf("%d*%d",&n1,&m1);
if(i==1)
{
p[0]=n1; p[1]=m1;
}
else
p[j++]=m1;
}
printf("\n记录矩阵行和列:\n");
for(i=0;i<=n;i++)
{
printf("%d ",p[i]);
}
printf("\n");
printf("\n*****************\n");
f(0,n);
print(m,n);
printf("\n****************\n");
print(s,n);
}
还有那个下面那个二维数组 s[][]到底怎么看
#include<stdio.h>
#define N 20
int m[N][N]={0};
int s[N][N]={0}, p[N]={0};
void print(int a[N][N],int t)
{
int i,j;
for(i=0;i<t;i++)
{
for(j=0;j<t;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
int f(int i,int j)
{
int k;
if(m[i][j]>0)
return m[i][j];
if(i==j)
return 0;
int u;
// u=f(i,i)+f(i+1,j)+p[i-1]*p[i]*p[j];
u=99999 ;
//printf("first min : %d\n",u);
// s[i][j]=i;
//printf("切断位置:%d\n",i);
for( k=i;k<j;k++)
{
int t=f(i,k)+f(k+1,j)+p[i]*p[k+1]*p[j+1];
if(t<u)
{
u=t;
s[i][j]=k;
printf("s[i][j]:%d %d",s[i][j]);
printf("A%d) \n ",i);
printf("\n*****\n");
}
}
m[i][j]=u;
//printf("(A%d*A%d)\n",i,j);
//printf(" min : %d\n",u);
return u;
}
int main()
{
int n,n1,m1,i,j=2;
printf("please input the number of matrix");
scanf("%d",&n);
//char c[]={A0,A1,A2,A3,A4,A5,A5};
for(i=1;i<=n;i++)
{
printf("请输入第%d个矩阵的行和列(n1*m1 格式):",i);
scanf("%d*%d",&n1,&m1);
if(i==1)
{
p[0]=n1; p[1]=m1;
}
else
p[j++]=m1;
}
printf("\n记录矩阵行和列:\n");
for(i=0;i<=n;i++)
{
printf("%d ",p[i]);
}
printf("\n");
printf("\n*****************\n");
f(0,n);
print(m,n);
printf("\n****************\n");
print(s,n);
}