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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值