Problem 4 : matrix
矩阵乘法
问题描述
一个A x B的矩阵乘以一个B x C的矩阵将得到一个A x C的矩阵,时间复杂度为A x B x C。矩阵乘法满足结合律(但不满足交换律)。顺序给出n个矩阵的大小,请问计算出它们的乘积的最少需要花费多少时间。
输入数据
第一行输入一个正整数n,表示有n个矩阵。
接下来n行每行两个正整数Xi,Yi,其中第i行的两个数表示第i个矩阵的规模为Xi x Yi。所有的Xi、Yi<=100。输入数据保证这些矩阵可以相乘。
输出数据
输出最少需要花费的时间。
样例输入
3
10 100
100 5
5 50
样例输出
7500
样例说明
顺序计算总耗时7500;先算后两个总耗时75000。
时间限制
各测试点1秒
内存限制
你的程序将被分配32MB的运行空间
数据范围
n<=100。
这是一道简单的动态规划,我们只需要将这个矩阵看成一个序列就好了,每次乘可以消掉中间的一个数,那么我们设F[i][j]表示矩阵中留下i号点与j号点的最小花费,那么我们有F[i][j]=min(F[i][k]+F[k][j]+a[i]*a[k]*a[j])但是一开始我做的时候忽略了循环顺序的关系,直接枚举了i,j,k,就导致了错误,本题应该是层数优先,最外面一层枚举跨度,所以也请大家多注意动态规划的这些细节。
#include<c