算法导论第十五章15.2矩阵链乘法(使矩阵所需标题乘法的次数最少)c++
2016-10-20 12:26
369 查看
#include "StdAfx.h" #include <iostream> #include <vector> using namespace std; vector<vector<int>>m(10); vector<vector<int>>s(10); void matrix_chain_order(vector<int>p) { int length = p.size()-1;//p元素的个数比矩阵个数多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) printf("A%d",i); else { cout<<"("; print(i,s[i][j]); print(s[i][j]+1,j); cout<<")"; } } int main() { int p1[]={30,35,15,5,10,20,25}; vector<int>p; for(int i=0;i<sizeof(p1)/4;i++) p.push_back(p1[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_order(p); int len = p.size()-1; cout<<"最少次数:"<<m[1][len]<<endl; cout<<"结合方式:"; print(1,len); cout<<endl; return 0; }
相关文章推荐
- 矩阵链乘法求两矩阵相乘所需的最小次数(算法3.6&3.7)
- 矩阵连乘时最少乘法次数
- 矩阵相乘求最少相乘次数的C++实现代码
- 2015-8-18数据结构-动态规划-矩阵乘法次数最少
- 计算矩阵乘法所需运算的次数
- 算法导论-第15章-动态规划:矩阵链乘法C++实现
- 矩阵链乘法问题(给A1A2A3...An加括号,使之乘法次数最小)动态规划问题C++实现
- 算法导论15.2 矩阵链乘法
- 矩阵链乘法问题(给A1A2A3...An加括号,使之乘法次数最小)动态规划问题C++实现
- 算法导论 15.2 矩阵链乘法
- 《算法导论》笔记 第15章 15.2 矩阵链乘法
- 算法导论15.2矩阵链乘法 练习总结
- 矩阵乘法 C++实现
- 5个数排列所需的最少比较次数
- 算法导论 动态规划 矩阵链乘法
- 算法导论15.2节 矩阵链乘法
- NYOJ-46:最少乘法次数
- 算法导论十五章--矩阵链乘法
- C++ 18(矩阵乘法)
- 算法导论第十五章习题15.4-4c++代码实现