此题可以转化为最优矩阵链乘的形式,d(i, j)表示区间[i, j]所能得到的最小权值。枚举最后一个拿走的数a[k],状态转移方程为d(i, j) = min{ d(i, k) + d(k, j) + a[i] * a[k] * a[j] } 1 #include 2 #include 3 #i.....
分类:
其他好文 时间:
2015-08-03 00:47:56
阅读次数:
161
Optimal Array Multiplication Sequence
Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu
Submit Status Practice UVA 348
Appoint description:Description
Download as PDFGiven two...
分类:
其他好文 时间:
2015-07-24 14:20:13
阅读次数:
89
该题乍一看和矩阵链乘很相似,可是有一个不同之处就是该题可以拼接 。 为了达到这个目的,我们不得不拓展维度d[i][j][k],用一个k表示最右边拼接了k个和a[j]相同颜色的方块。
问题的关键在于拼接,当右边存在一个q
细节见代码:
#include
using namespace std;
const int maxn = 205;
int t,n,d[maxn][maxn][max...
分类:
其他好文 时间:
2015-07-19 18:06:33
阅读次数:
95
花了近2个小时最终AC,好爽。。一道类似于最优矩阵链乘的题目,受《切木棍》那道题的启发,该题的原理也是一样的,只不过变成了且面积,那么相应的也要增加维度 。
显然要完整的表示状态,最少要用四维数组,分别表示它的两个对角线顶点的坐标 。 然后横切或者纵切,递归需找更小的矩形,直到矩形内只剩一个樱桃的时候返回0
那么问题就是怎样快速的判断一个矩形内有多少个樱桃,于是决定再开一个数组记录这个矩形...
分类:
其他好文 时间:
2015-07-18 12:42:48
阅读次数:
225
矩阵链乘的优化问题产生的原因: 如图,对于矩阵的链乘时,我们可以采用不同的组合进行相乘当然不同的组合会产生不同的效率。不同的组合所产生的效率如下:上面表达式的意思是,对于一个从Ai?乘到A?j?的矩阵链乘运算,我们可以将问题进行划分为两个子问题如下:从A?i 乘到Ak的效率代价加上A?k+1?到Aj...
分类:
其他好文 时间:
2015-07-17 20:53:23
阅读次数:
158
在动态规划问题中,我们经常会遇到以下问题,最优解倒是求出来了,但是最优解的路径呢?如何输出?这确实是一个问题,而且往往比较难哟。。我这里说的路径是指,像在钢条切割问题中,从哪些地方切可以达到最优化,在矩阵链乘问题中,从哪些地方进行组合可以使效率最高?在钢条切割问题中:for(j=1;jprice){...
分类:
其他好文 时间:
2015-07-17 20:40:31
阅读次数:
185
类似于最优矩阵链乘,将长区间划分成段区间求解,换句话说:长区间依赖于段区间 。 因此如果利用二重循环递推的话,枚举的顺序应该是木棍的长度从小到大,因为长区间依赖于短区间的最优解 。 所以动态规划的重点我认为就是对状态的定义和动态规划的方向, 状态的定义要确保覆盖所有状态,规划的方向要遵循一个状态依赖于另一个早已解决的状态。 所以该题有两种解决方法:记忆化搜索和递推 。
我分别用这两种方...
分类:
其他好文 时间:
2015-07-12 14:21:36
阅读次数:
226
动态规划--矩阵链乘法1、矩阵乘法 Note:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×r的矩阵A左乘一个r×n的矩阵B,会得到一个m×n的矩阵C。#include using namespace std;#define A_ROWS 3#define A_CO...
分类:
其他好文 时间:
2015-06-17 21:27:16
阅读次数:
234
矩阵链乘法问题
给定一个n个矩阵的序列?A1,A2,A3...An?\langle A_1,A_2,A_3...A_n\rangle,我们要计算他们的乘积:A1A2A3...An A_1A_2A_3...A_n,由于矩阵乘法满足结合律,加括号不会影响结果,但是不同的加括号方法,算法复杂度有很大的差别:
考虑矩阵链:?A1,A2,A3?:\langle A_1,A_2,A_3\rangle,三个...
分类:
编程语言 时间:
2015-06-03 15:56:37
阅读次数:
671
前言:今天接着学习动态规划算法,学习如何用动态规划来分析解决矩阵链乘问题。首先回顾一下矩阵乘法运算法,并给出C++语言实现过程。然后采用动态规划算法分析矩阵链乘问题并给出C语言实现过程。1、矩阵乘法 从定义可以看出:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×r的矩阵A...
分类:
编程语言 时间:
2015-05-17 11:58:08
阅读次数:
176