【问题】 给定n个矩阵的链<A1,A2,…,An>,其中Ai与Ai+1是可乘的,矩阵Ai的维数为pi-1*pi(1≤i≤n), 如何确定计算矩阵链乘积A1A2…An的计算次序(完全括号化方式),使得依此次序计算矩阵链乘积需要的数乘次数最少。 【算法分析】 【源代码】 代码(1) 代码(2) ...
分类:
其他好文 时间:
2017-04-10 22:32:30
阅读次数:
257
问题: 考虑整齐打印问题,即在打印机上用等宽字符打印一段文本。输入文本为n个单词的序列,单词长度分别为l1,l2,……,ln个字符。要求将此段文本整齐打印在若干行上,每行最多M个字符。若每行包含第i到底j(i<=j)个单词,且单词间隔为一个空格符,则行尾的额外空格符数量为M-j+i-(li+……+l ...
分类:
其他好文 时间:
2017-03-31 00:28:52
阅读次数:
264
点击查看大大的博文 二维数组**s 储存分割位置 s[i][j](i<j) 表示从第i个到第j个矩阵 将矩阵以其中第s[i][j]个分割 MatrixChain()函数递归实现动态规划 从最内层开始 每层动态选择相乘次数最少的 (外层的选择可能会改变内层的选择) 并将分割位置记录在**s数组中 ...
分类:
其他好文 时间:
2017-01-27 18:00:07
阅读次数:
295
矩阵的乘积:一个i行j列的矩阵和一个j行k列的矩阵相乘,计算次数为i*j*k 那么问题来了:给定n个可相乘的矩阵,怎么相乘才能是计算次数最少呢? 输入: 多组输入数据。 每组数据以N开始,表示矩阵链的长度。接下来一行N+1个数表示矩阵的行/列数。 1<=N<=300 输出: 对于每组样例,输出一行最 ...
分类:
其他好文 时间:
2016-12-21 02:42:04
阅读次数:
222
基本思想:动态规划算法与分治法类似,其基本思想是将带求解的问题划分成若干个独立子问题,根据求得子问题的解合并而得到原问题的解。而动态规划划分的子问题往往不是相互独立的,因此若采用同分治法相同的求解问题的方法会导致大量的子问题被重复计算,为了避免这种情况发生..
分类:
编程语言 时间:
2016-10-30 01:19:38
阅读次数:
1458
一.问题描叙 给定n个矩阵{A1,A2,……,An},其中Ai与Ai+1是可乘的,i=1,2,……,n-1。 例如: 计算三个矩阵连乘{A1,A2,A3};维数分别为10*100 , 100*5 , 5*50 按此顺序计算需要的次数((A1*A2)*A3):10X100X5+10X5X50=7500 ...
分类:
编程语言 时间:
2016-10-23 14:49:19
阅读次数:
1418
动态规划——矩阵连乘的问题 《问题的引出》 看下面一个例子,计算三个矩阵连乘{A1,A2,A3};维数分别为10*100 , 100*5 , 5*50 按此顺序计算需要的次数((A1*A2)*A3):10X100X5+10X5X50=7500次 按此顺序计算需要的次数(A1*(A2*A3)):10X ...
分类:
其他好文 时间:
2016-09-30 01:14:42
阅读次数:
268
描述 一个n*m矩阵由n行m列共n*m个数排列而成。两个矩阵A和B可以相乘当且仅当A的列数等于B的行数。一个N*M的矩阵乘以一个M*P的矩阵等于一个N*P的矩阵,运算量为nmp。 矩阵乘法满足结合律,A*B*C可以表示成(A*B)*C或者是A*(B*C),两者的运算量却不同。例如当A=2*3 B=3 ...
分类:
其他好文 时间:
2016-08-09 22:06:57
阅读次数:
362
1.计算连个矩阵乘积的标准算法: //标准算法 void MatrixMultiply(int a[][MAXN], int b[][MAXN], int p, int q, int r) { int sum[MAXN][MAXN]; memset(sum, 0, sizeof(sum)); int... ...
分类:
编程语言 时间:
2016-07-23 14:53:24
阅读次数:
540