#include<stdio.h>
void main()
{
int p[100];
int n;
int m[10][10];
int s[10][10];
printf("input the n:\n");
scanf("%d\n",&n);
printf("input the p:\n");
for(int i=0;i<n;i++)
{
scanf("%d\n",&p);
}
void matrixChain(int p[10], int m[10][10], int s[10][10],int n);
matrixChain(p,m,s,n);
}
void matrixChain(int p[10], int m[10][10], int s[10][10],int n)
{
//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; }
}
int a=m[i][j];
int b=s[i][j];
printf("m[%d][%d]=%d\n",i,j,a);
printf("n[%d][%d]=%d\n",i,j,b);
void traceback(int i, int j,int s[10][10]);
traceback(i,j,s);
}
}
void traceback(int i, int j,int s[10][10])
{
if(i == j){
printf("A%d", i);
}
if(i < j){
printf("(");
traceback(i, s[i][j],s);
traceback(s[i][j]+1, j,s);
printf(")");
}
}