65,186
社区成员




void MatrixChain(int *p, int n, int **m, int **s) {
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; }
}
}
}
void MatrixChain(int *, int, int **, int **);
int main() {
int n=6;
int **m, **s;
m=new int *[n+1];
s=new int *[n+1];
int p[]={30,35,15,5,10,20,25};
MatrixChain(p,n,m,s);
return 0;
}
#include<iostream>
using namespace std;
void MatrixChain(int *p, int n, int **m, int **s) {
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 main() {
int n = 6;
int **m, **s;
m = new int *[n + 1];
s = new int *[n + 1];
for (int i = 0; i <n + 1; i++)
{
m[i] = new int[n + 1];
s[i] = new int[n + 1];
}
int p[] = { 30, 35, 15, 5, 10, 20, 25 };
MatrixChain(p, n, m, s);
return 0;
}