算法导论15.2节 矩阵链乘法
2013-03-13 20:29
260 查看
View Code
#include <stdio.h> #include <string.h> #define SIZE 6 typedef struct MATRIX { int row; int col; }matrix; int m[SIZE][SIZE] = {0}; int s[SIZE][SIZE] = {0}; void matrixChainOrder(matrix *p) { int i, j, l, k; int n = 6;//sizeof(p)/sizeof(matrix); for (i = 0; i < n; i++) { m[i][i] = 0; } for (l = 2; l <= n ; l++) { for (i = 0; i < n-l+1; i++) { j = i + l - 1; m[i][j] = 0x7fffffff;//开始设置为0xffffffff为-1 for (k = i; k <= j; k++) { int q = m[i][k] + m[k+1][j] + (p[i].row) * (p[k].col) * (p[j].col); if (q < m[i][j]) { m[i][j] = q; s[i][j] = k+1; } } } } } void printOptimalParent(int (*s)[6], int i, int j) { if (i == j) { printf("A%d", i); } else { printf("("); printOptimalParent(s, i, s[i-1][j-1]); printOptimalParent(s, s[i-1][j-1]+1, j); printf(")"); } } int main() { matrix matrix[6] = {{30,35}, {35, 15}, {15, 5}, {5, 10}, {10, 20}, {20, 25}}; matrixChainOrder(matrix); printOptimalParent(s, 1, 6); printf("\n"); return 0; }
相关文章推荐
- 《算法导论》笔记 第15章 15.2 矩阵链乘法
- 算法导论 动态规划 矩阵链乘法
- 算法导论15.2 矩阵链乘法
- 算法导论-第15章-动态规划:矩阵链乘法C++实现
- 算法导论第15章 动态规划-矩阵链乘法
- 算法导论 矩阵链乘法
- 《算法导论》读书笔记之动态规划—矩阵链乘法
- 算法导论-矩阵链乘法
- 算法导论15.2矩阵链乘法 练习总结
- 算法导论:第15章 动态规划_2矩阵链乘法
- 算法导论第十五章15.2矩阵链乘法(使矩阵所需标题乘法的次数最少)c++
- 算法导论十五章--矩阵链乘法
- 算法导论 15.2 矩阵链乘法
- 算法导论--动态规划(矩阵链乘法)
- 动态规划 (Dynamic Programming) 之 矩阵链乘法(Matrix Chain Multiplication)
- 动态规划之“矩阵链乘法”问题【经典】
- 动态规划 - 矩阵链乘法
- 矩阵链乘法
- 矩阵链乘法和动态规划原理
- n阶矩阵一般乘法-《算法导论》学习笔记五