public class JuZhengChengJi {
public static void matrixMultiply(int m[][],int s[][],int p[]){
int n = p.length - 1;
for(int i=1;i<=n;i++)
{
m[i][i]=0;
}
for(int r=2;r<=n;r++)
{
for(int i=1;i<=n-r+1;i++)
{
int j=i+r-1;
m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j];
s[i][j]=i;
for(int k=i+1;k<j;k++)
{
int t=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];
if(t<m[i][j])
{
m[i][j]=t;
s[i][j]=k;
}
}
}
}
System.out.println(m[1][6]);
}
public static void traceback(int s[][],int i,int j)
{
if(i==j)System.out.print("A"+i);
else
{
System.out.print("(");
traceback(s,i,s[i][j]);
traceback(s,s[i][j]+1,j);
System.out.print(")");
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入矩阵的个数:");
int n=sc.nextInt();
int p[]=new int[n+1];
System.out.println("请输入矩阵具体信息:");
for(int i=0;i<n+1;i++)
{
p[i]=sc.nextInt();
}
int m[][]=new int[n+1][n+1];
int s[][]=new int[n+1][n+1];
System.out.println("最小值为:");matrixMultiply(m,s,p);
System.out.println("组合方式为:");
traceback(s,1,n);
}
}
矩阵乘积(java)
于 2021-06-29 21:41:50 首次发布