矩阵链相乘
来源:互联网 发布:mac ps如何导入字体 编辑:程序博客网 时间:2024/06/06 19:27
/*矩阵链相乘问题C++代码输入:矩阵数量 n 这些矩阵的n+1个行列数输出:最小相乘次数 矩阵链相乘结合方式*/#include <iostream>#include <vector>using namespace std;vector<vector<int>> m(10);vector<vector<int>> s(10);void Matrix_Chain(vector<int> p) { int length = p.size() - 1; for (int l = 2; l <= length; l++)//矩阵长度 { for (int start = 1; start <= length - l + 1; start++) { int end = start + l - 1; m[start][end] = INT_MAX; for (int k = start; k <= end - 1; k++) { int q = m[start][k] + m[k + 1][end] + p[start - 1] * p[k] * p[end]; if (q < m[start][end]) { m[start][end] = q; s[start][end] = k; } } } }}void print(int i, int j) { if (i == j) cout << char(int('A') + i - 1); else { cout << "("; print(i, s[i][j]); print(s[i][j] + 1, j); cout << ")"; }}int main() { int n, i, rc[20]; cout << "请输入矩阵个数:"; cin >> n; cout << "请依次输入这些矩阵的" << n + 1 << "个行列数:"; for (i = 0; i <= n; i++) cin >> rc[i]; vector<int> p; for (int i = 0; i <= n; i++) p.push_back(rc[i]); for (int i = 0; i < 10; i++) { m[i].resize(10); m[i][i] = 0; } for (int i = 0; i < 10; i++) s[i].resize(10); Matrix_Chain(p); int len = p.size() - 1; cout << "最少相乘次数:" << m[1][len] << endl; cout << "结合方式:"; print(1, len); cout << endl; return 0;}
阅读全文
0 0
- 矩阵链相乘
- 矩阵链相乘
- 矩阵链相乘
- 矩阵链相乘
- 矩阵链相乘
- 算法(DP):矩阵链相乘
- 矩阵链相乘--动态规划
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- [日常训练] tty的方程
- ORB_SLAM2系列之三:ORB_SLAM2跑RGBD SLAM数据集
- 判断元素出栈、入栈顺序的合法性
- 《ActiveMQ in Action》【PDF】
- JS中常用的Math方法
- 矩阵链相乘
- Jfinal HttpKit.post(url,data)源码解析
- Winform中报表RDLC的设计与实现
- 6年前的防sql注入服务器安全配置文章,依然很有用
- [操作系统] 页面置换算法(一)
- 【Python】python引入外部文件
- HDU1251 统计难题(Trie树)
- 工作一周总结
- 算法导论:c++计数排序