矩阵链乘法(动态规划法)
来源:互联网 发布:linux tail f 编辑:程序博客网 时间:2024/06/11 19:41
/** * @fileDPMatrixChain.cpp * @briefa solution of MatrixChain with DP's way. * @author/Univtaoxiaoxiao/Univ. * @date11-3-2013 * @versionv1.0 *///实例:矩阵维数30X35 35X15 15X5 5X10 10X20 20X25#include <iostream>#include <vector>using namespace std;#define N 6#define INF 0x3f3f3f3fint m[N + 1][N + 1], s[N + 1][N + 1];void DPMatrixChain(vector<int> p){int n = p.size() - 1;int i, j, c, k;for (i = 1; i <= n; ++i)m[i][i] = 0;for (c = 2; c <= n; ++c){for (i = 1; i <= n - c + 1; ++i){j = i + c - 1;m[i][j] = INF;for (k = i; k <= j - 1; ++k){int q = m[i][k] + m[k + 1][j] + p[i - 1] * p[k] * p[j];if (q < m[i][j]){m[i][j] = q;s[i][j] = k;}}}}}void showpath(int i, int j){if (i == j)cout << "A" << i;else{cout << "(";showpath(i, s[i][j]);showpath(s[i][j] + 1, j);cout << ")";}}int main(){vector<int> p{ 30, 35, 15, 5, 10, 20, 25 };DPMatrixChain(p);cout << "最优加括号方式为:";showpath(1, 6);cout << endl;cout << "最小乘法次数:" << m[1][6] << endl;return 0;}
输出
0 0
- 矩阵链乘法(动态规划法)
- 矩阵链乘法(动态规划法)
- 矩阵链乘法(动态规划)
- 动态规划(三)--矩阵链乘法
- 动态规划-矩阵链乘法(1)
- 动态规划-矩阵链乘法(2)
- 动态规划——矩阵链乘法(备忘录法)
- 动态规划 矩阵链乘法
- 动态规划 矩阵链乘法
- 动态规划----矩阵链乘法
- 动态规划 -- 矩阵链乘法
- 动态规划-矩阵链乘法
- 【动态规划】矩阵链乘法
- 动态规划-矩阵链乘法
- 动态规划-矩阵链乘法
- 动态规划--矩阵链乘法
- 矩阵乘法(动态规划)
- 数据结构之(动态规划二)之<矩阵链乘法>
- 数据库多表链接
- Exercise
- Linux 常用命令速查【长期更新】
- 双向链表--图解
- c++运算符重载
- 矩阵链乘法(动态规划法)
- 黑马程序员——Java概述+环境搭建和变量配置
- uva 607(dp)
- UVa 1594 - Ducci Sequence
- JS定时刷新页面及跳转页面
- uva607(DP)
- QT弹出对话框&文件读取&设置tab键的顺序和光标的位置&lineedit
- android StringBuffer类的使用
- 第一章知识导图