题目描述:
递归方式:
//递归方法
#include<iostream>
#include<cstdio>
using namespace std;
int p[100],s[100][100];
int DirectMatrixChain(int i,int j)//递归的求最优解u
{
if(i==j) return 0;
int u=DirectMatrixChain(i,i)+DirectMatrixChain(i+1,j)+p[i-1]*p[i]*p[j];
s[i][j]=i;
for(int k=i+1;k<j;k++)
{
int t=DirectMatrixChain(i,k)+DirectMatrixChain(k+1,j)+p[i-1]*p[k]*p[j];
if(t<u)
{
u=t;
s[i][j]=k;
}
}
return u;
}
void traceback(int i,int j)//递归输出矩阵连乘次序
{
if(i==j)
cout<<"A"<<i;
else if (i==j-1)
cout<<"(A"<<i<<"A"<<j<<")";
else