矩阵连乘ing
2017-11-01 15:38
155 查看
#include <iostream> #include <cstdio> #include <cstring> using namespace std; #define SIZE 100 #define INF 999999999 int m[SIZE]; //存放矩阵链的行列信息,m[i-1]和m[i]分别为第i个矩阵的行和列(i = 1、2、3...) int d[SIZE][SIZE]; //存放矩阵链计算的最优值,d[i][j]为第i个矩阵到第j个矩阵的矩阵链的最优值,i > 0 int Best_DP(int n) //n代表5个矩阵 { //把d[i][i]置为0,1 <= i < n //初始化 memset(d, 0, sizeof(d)); int len; //递归计算矩阵链的连乘最优值 //len = 1,代表矩阵链由两个矩阵构成 for (len = 1; len < n; len++) // { int i, j, k; for (i = 1, j = i+len; j < n; i++, j++) { int min = INF; //无穷大 for (k = i; k < j; k++) { int count = d[i][k] + d[k+1][j] + m[i-1] * m[k] * m[j]; printf("\n......%d %d....%d\n",i,j,count); if (count < min) { min = count; } } d[i][j] = min; printf("%d %d %d\n",i,j,d[i][j]); } } return d[1][n-1]; } int main(void) { int n; while (scanf("%d", &n) != EOF) { int i; for (i = 0; i < n; i++) { scanf("%d", &m[i]); } printf("%d\n", Best_DP(n)); } return 0; }
相关文章推荐
- UVa 1626 括号序列(矩阵连乘)
- 矩阵连乘
- 动态规划之矩阵连乘
- 矩阵连乘DP模型
- 算法动态规划问题之矩阵连乘
- 矩阵连乘 LRJ白书 p141 栈 解析表达式
- 动态规划——矩阵连乘问题
- 矩阵连乘最优次序 c++实现 动态规划算法
- 矩阵连乘问题
- 动态规划计算矩阵连乘
- 动态规划——矩阵连乘
- hdu 3306 Another kind of Fibonacci(矩阵连乘)
- 矩阵连乘
- hdu 3117 Fibonacci Numbers(数学推导+矩阵连乘)
- C++动态规划解决矩阵连乘问题
- poj3420 状态压缩+矩阵连乘
- 算法重拾之路——矩阵连乘问题
- BZOJ3231(矩阵连乘,稍有点复杂)
- 矩阵连乘详解
- 0010算法笔记——【动态规划】矩阵连乘问题