问题提出: 对于如下矩阵: 其中各矩阵A[i]下标为 计算其乘积的结果,以及我们需要计算其最小标量乘法次数。 问题分析: 首先我们需要明确的是何为标量:标量即为没有方向的量,而有方向的量即为矢量。(严谨的定义自己百度去) 那么标量乘法就变成了最基本的数字相乘。 其次对于两个矩阵相乘,需满足下示公式所...
分类:
其他好文 时间:
2014-11-06 14:47:47
阅读次数:
382
前言:今天接着学习动态规划算法,学习如何用动态规划来分析解决矩阵链乘问题。首先回顾一下矩阵乘法运算法,并给出C++语言实现过程。然后采用动态规划算法分析矩阵链乘问题并给出C语言实现过程。1、矩阵乘法 从定义可以看出:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×r的矩阵A...
分类:
其他好文 时间:
2014-11-06 10:45:20
阅读次数:
171
题目链接:http://poj.org/problem?id=1651题目大意:加分取牌。如果一张牌左右有牌则可以取出,分数为左牌*中牌*右牌。这样最后肯定还剩2张牌。求一个取牌顺序,使得加分最少。解题思路:矩阵链乘的变种题。假设有10、20、30、40、50五张牌。如果我想要最后取30,则应该先取...
分类:
其他好文 时间:
2014-10-25 13:07:13
阅读次数:
162
题意 计算给定矩阵链乘表达式需要计算的次数 当前一个矩阵的列数等于后一个矩阵的行数时 他们才可以相乘 不合法输出error
输入是严格合法的 即使只有两个相乘也会用括号括起来 而且括号里最多有两个 那么就很简单了 遇到字母直接入栈 遇到反括号计算后入栈 然后就得到结果了
#include
#include
#include
using namespace std;
const ...
分类:
其他好文 时间:
2014-09-17 10:18:42
阅读次数:
151
1.链接:http://bailian.openjudge.cn/practice/27662.题目:总Time Limit:1000msMemory Limit:65536kBDescription已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1...
分类:
其他好文 时间:
2014-08-12 18:24:24
阅读次数:
230
UVa442 Matrix Chain Multiplication(矩阵链乘)
题目链接:Uva442
题目描述:输入n个矩阵的维度和一个矩阵链乘的表达式,输出乘法的次数,如果乘法无法进行,则输出error。
题目分析:
栈对表达式求值有着特殊的作用,本题表达式简单,可以用一个栈来完成,遇到字母时入栈,遇到右括号时出栈并且计算,之后算出的结果入栈。
参考代码:
//矩阵链乘....
分类:
其他好文 时间:
2014-08-03 10:19:15
阅读次数:
225
问题描述: 给定由n个要相乘的矩阵构成的序列(链),要计算乘积A1A2...An,可以将两个矩阵相乘的标准算法作为一个子程序,通过加括号确定计算的顺序(对同一矩阵链,不同的计算顺序所需要的计算次数大不相同)。 目标问题:给定n个矩阵构成的矩阵链,其中,i=1,2,...,n,矩阵Ai的维数为pi.....
分类:
其他好文 时间:
2014-07-29 21:28:02
阅读次数:
417
本题的关键在于解析表达式.本题的表达式比较简单,可以用一个栈来完成--->>
遇到一个字母时,就入栈;遇到右括号时就出栈进行计算,然后将新矩阵点入栈!
如果在这之间,如果A的列数不等于B的行数,则乘法无法进行!!!注意咯!...
分类:
其他好文 时间:
2014-07-29 17:53:32
阅读次数:
189
一 题意描述:给定由n个要相乘的矩阵构成的序列(链)。由于矩阵满足结合律(加括号方式表示结合方式),不同的计算方式导致的求出最终计算结果的代价相异,有的花的时间很少,有的方式所花时间很多,那么下面的任务就是求出算出结果所需要的最少时间及一个最优解。二 思路分析:设p(n)表示一串n个矩阵可能的加全部...
分类:
其他好文 时间:
2014-07-20 22:18:13
阅读次数:
252
和分治法一样,动态规划也是通过组合子问题的解而解决整个问题的。分治法是指将问题划分为一个一个独立的子问题,递归地求解各个子问题然后合并子问题的解而得到原问题的解。与此不同,动态规划适用于子问题不是相互独立的情况,即各个子问题包含公共的子子问题。在这种情况下,如果用分治法会多做许多不必要的工作,重复求解相同的子子问题。而动态规划将每个子问题的解求解的结果放在一张表中,避免了重复求解。...
分类:
其他好文 时间:
2014-07-12 19:20:19
阅读次数:
258