矩阵链乘法 算法导论

来源:互联网 发布:python调用命令行 编辑:程序博客网 时间:2024/06/05 23:40
  • [1003] 矩阵链乘法(http://ac.nbutoj.com/Problem/view.xhtml?id=1003)

  • 时间限制: 1000 ms 内存限制: 65535 K
  • 问题描述
  • 给定一个有n个矩阵的矩阵链A1A2A3…An,其中矩阵Ai(i=1,2,3…n)的维度为pi-1*pi。我们知道,两个维度分别为m*r和r*n的矩阵用一般的矩阵乘法相乘,所需的运算次数为m*r*n,最后得到一个维度为m*n的结果矩阵。对于矩阵链问题,因为矩阵乘法具有结合律,其运算顺序有很多中选择。换句话说,不论如何括号其乘积,最后结果都会是一样的。例如,若有四个矩阵A、B、C和D,将可以有:

    (ABC)D = (AB)(CD) = A(BCD) = A(BC)D = ...

    但括号其乘积的顺序会影响到需要计算乘积所需简单算术运算的数目,即其效率。例如,设A为一10*30矩阵,B为30*5矩阵与C为5*60矩阵,则:

    (AB)C有(10*30*5) + (10*5*60) = 1500 + 3000 = 4500 个运算A(BC)有(30*5*60) + (10*30*60) = 9000 + 18000 = 27000 个运算...

    明显地,第一种方式要有效多了。所以,矩阵链乘法问题也就是如何对矩阵乘积加括号,使得它们的乘法次数达到最少。


  • 输入
  • 输入的第一行为一个正整数n(1<=n<=200)。表示矩阵的个数。
    输入的第二行包含n+1个整数,分别表示pi(0<=i<=n),其中每个pi在[1,200]范围内。
  • 输出
  • 输出一个整数表示最少要进行的乘法次数。
  • 样例输入
  • 31 2 3 4310 30 5 60
  • 样例输出
  • 184500
  • 提示
  • 来源
  • Timebug
  • #include <stdio.h>
    #include <stdlib.h>
    #define _DEBUG 0
    #define MAXN 205
    #define INF 0x3c3c3c3c
    int c[MAXN][MAXN];
    int p[MAXN];
    int solve(int n){
         int i,j,l,k;
         //初始化
         for(i=0;i<=n;i++)         
              c[i][i]=0;    
         for(l=1;l<n;l++){
              for(i=1;i<=n-l;i++){
                   j=i+l;
                   c[i][j]=INF;
                   for(k=i;k<j;k++){
                        int t;
                        if((t=c[i][k]+c[k+1][j]+p[i-1]*p[k]*p[j])<c[i][j])
                             c[i][j]=t;
                   }
              }
         }
         return c[1][n];
    }

    int main(){
    #if _DEBUG==1
         freopen("1003.in","r",stdin);
    #endif
         int n,i;
         while(scanf("%d",&n)!=EOF){
              for(i=0;i<=n;i++){
                   scanf("%d",&p[i]);
              }
              printf("%d\n",solve(n));
         }
    }

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 轮胎里面卡进小石子应该怎么办 手游吃鸡模拟器已经到达上限怎么办 逆战场手游模拟器黑屏怎么办 欧洲卡车2翻车了怎么办 卧式注塑机锁模久了打不开怎么办 欧洲卡车2困了怎么办 欧卡2没油了怎么办 欧卡2车卡住了怎么办 欧卡2车子卡住了怎么办 做题手感变差怎么办 吃鸡游戏掉帧怎么办 买了俄区游戏怎么办 战地1子弹用完了怎么办 1kb彩信点开了怎么办 玩地球末日卡顿怎么办 电脑显示不亮了怎么办 电脑玩游戏显卡停止运行怎么办 ie浏览器打开就停止工作怎么办 蝙蝠侠阿甘骑士卡顿怎么办 捷豹钥匙没电了怎么办 车钥匙没电 汽车报警怎么办 东西卡在门锁里怎么办 锁芯里面有东西怎么办 有东西卡在锁里怎么办 锁里面卡了牙签怎么办 塑料卡在锁里怎么办 门锁被牙签堵了怎么办 锁子里面卡东西怎么办 东西卡在锁里怎么办 开车门碰到旁边车门怎么办 美团退款后 物品怎么办 倒车影像是反的怎么办 荒野行动cp版玩着玩着关机怎么办 王者荣耀点击开始游戏就闪退怎么办 电脑遥控游玩ps4画面抖动怎么办 ps4特典不能用了怎么办 苹果x出现的分屏怎么办 电脑注册表文件丢失或损坏怎么办 cad绘图反应很慢怎么办 拍到货商家下架怎么办 电动车头太活了怎么办