算法导论——矩阵连乘
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int msize = 100;
int p[msize];
int m[msize][msize],s[msize][msize];
int n;
void matrixchain()
{int i,j,r,k;memset(m,0,sizeof(m)); //初始化二维数组m 和 s memset(s,0,sizeof(s));for(r = 2; r <= n; r++) //不同规模的子问题 {for(i = 1;i <= n-r+1; i++){j = i + r -1;m[i][j] = m[i+1][j] + p[i-1] * p[i] * p[j]; //决策为 k = i的乘法次数s[i][j] = i; //子问题的最优策略是ifor(k = i+1; k < j; k++) //对从i到j的所有决策,求最优值,记录最优策略 {int t = m[i][k] + m[k+1][j] + p[i-1] * p[k] * p[j];if(t < m[i][j]){m[i][j] = t;s[i][j] = k;} } } }
}void print(int i,int j){if(i == j){cout<< "A[" << i <<"]";return ;}cout << "(" ;print(i,s[i][j]);print(s[i][j]+1,j);cout<<")";}int main()
{cout<<"请输入矩阵的个数n: ";cin>>n;int i,j;cout<<"请依次输入每个矩阵的行数和最后一个矩阵的列数:" ;for(i = 0; i<= n;i++)cin>>p[i];matrixchain();print(1,n);cout<<endl;cout<< "最小计算量的值为 :"<< m[1][n] <<endl;
}
运行结果
算法导论——矩阵连乘相关推荐
- 矩阵链乘法 自顶向下 自底向上 Python 实现 算法导论
算法导论 矩阵链乘法 自顶向下 自底向上 Python 实现 带备忘的自顶向下实现方式 def Memoized_Matrix_chain(p):n = len(p)m = [[0 for i in ...
- 《算法导论》——矩阵乘法的Strassen算法
前言: 很多朋友看到我写的<算法导论>系列,可能会觉得云里雾里,不知所云.这里我再次说明,本系列博文时配合<算法导论>一书,给出该书涉及的算法的c++实现.请结合<算法导 ...
- 算法导论之单源最短路径
单源最短路径,在现实中是很多应用的,是图的经典应用,比如在地图中找出两个点之间的最短距离.最小运费等.单源最短路径的问题:已知图G=(V,E),找出给定源顶点s∈V到每个顶点v∈V的最短路径.单源最短 ...
- 算法导论之图的基本算法
图是一种数据结构,有关图的算法是计算机科学中基础性的算法.这个论述恰如其分. 图的基本算法包括图的表示方法和图的搜索方法.图的搜索技术是图算法领域的核心,有序地沿着图的边访问所有顶点,可以发现图的结构 ...
- 算法导论之贪心算法(Huffman编码和拟阵)
贪心算法,在解决最优化问题上,通过得到子问题的局部最优解来合成问题的一个解,以局部最优选择来输出一个全局最优解. 问题要用贪心算法来求解,需满足和动态规划一样的最优子结构特征,同时还需要再每个子问题最 ...
- c语言大数相乘的算法_MIT 算法导论(三)
标签:b站MIT算法导论课程的一些笔记,整理以(bu)后(hui)看 代码引用标记: 归并排序的C语言实现 第三节 分治法 分治法(Divide and conquer) 1) 分治法的步骤 把问题分 ...
- 你是如何坚持读完《算法导论》这本书的?(帖子收集)
你是如何坚持读完<算法导论>这本书的? <算法导论>不够猛,答者顺便补充 "你是如何坚持读完<计算机编程的艺术>这本书的?" 罗必成: CLRS ...
- 矩阵相乘的strassen算法_矩阵乘法的Strassen算法+动态规划算法(矩阵链相乘和硬币问题)...
矩阵乘法的Strassen 这个算法就是在矩阵乘法中采用分治法,能够有效的提高算法的效率. 先来看看咱们在高等代数中学的普通矩阵的乘法 两个矩阵相乘 上边这种普通求解方法的复杂度为: O(n3) 也称 ...
- 【啃不完的算法导论】- 动态规划 - 最长公共子序列(概念篇)
以下内容纯是为了熟悉<算法导论>中的内容,高手可略过,其中涉及的书本内容的版权归原作者.译者.出版社所有 ========================================= ...
最新文章
- 不同平台上安装python一样吗_在多个平台如何安装Python
- 基准分类模型、分类应用(多分类数字识别、疾病预测、欺诈检测)、监督学习总结
- (完全解决)Windows如何使用批处理命令进行SSH连接并自动输入密码
- bzoj 36733674: 可持久化并查集 by zky
- 为维护视图创建事物码
- ibm z系列服务器 cpu,低调发布:看IBM System Z系列大型机CPU
- 佳能打印机ip90 64位系统的驱动_佳能打印机如何安装 佳能打印机漏墨如何解决【详解】...
- 实验5.5 定义一个Employee类
- Python入门--顺序结构,选择结构,对象的布尔值
- ubuntu下手动安装php-amqp模块教程
- Netty文章目录汇总
- await和async
- 交换机trunk模式工作原理
- win10系统文件拖拽卡顿_如何解决Win10鼠标拖动窗口有延迟?
- 如何启动联想计算机的休眠模式,如何设置休眠、待机、睡眠
- activiti流程图下发任务报错,不能正常流转到下一个处理步骤
- JavaScript中事件的绑定与解绑
- 【HAOI2014】贴海报
- 浅谈自媒体带货底层逻辑及公众号变现操作路径
- 主存/内存/外存 区分
热门文章
- js基础常考面试题汇总(一)(附答案)
- matlab定义多维数组长度,matlab如何定义三维数组
- 单面打印机打印小册子_如何在Microsoft Word中创建可打印的小册子
- MySQL之——MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)
- 计算机网络知识复习-计算机网络相关概念及网络分层架构模型
- 大航海时代——海上霸主带来的启示
- 商店销售某一商品,商店每天公布统一的折扣(discount)
- 中鑫优配股票配资网站:11月10日周三早间市场信息
- 抓包软件抓取手机数据(app,浏览器等)
- 使用Squirrel连接Phoenix