算法设计与分析第八次作业-动态规划-矩阵链相乘

1、问题

算法设计与分析第八次作业-动态规划-矩阵链相乘

2、解析

算法设计与分析第八次作业-动态规划-矩阵链相乘

算法设计与分析第八次作业-动态规划-矩阵链相乘

3、设计

int f(int p[100],int m[100][100],int s[100][100],int n) {
int i, j, k,r,t;
for (r = 2; r <= n; r++) {
//r代表矩阵链长度
for (i = 1; i <= n - r + 1; i++) {
//r 代表矩阵链的起始
j = i + r - 1;
m[i][j] = m[i][i] + m[i + 1][j] + p[i - 1] * p[i] * p[j];
//j代表矩阵链的终点
//m分割为Ai(Ai+1…Aj)
s[i][j] = i;
//初始化分割的位置为Ai处
for (k = i + 1; k <= j - 1; k++) {
//k为分割矩阵链的位置
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;
}
}
}
}
return m[1][n];
}

4、分析

O(n³)

5、源码

源码地址:

https://github.com/ACynj/jz.git