zoukankan      html  css  js  c++  java
  • 矩阵乘法

    题目描述:一个A x B的矩阵乘以一个B x C的矩阵将得到一个A x C的矩阵,时间复杂度为A x B x C,按顺序给出n个矩阵的大小。求计算出它们的乘积的最少需要花费多少时间。


    样例输入:

    3

    10 100

    100 5

    5 50
    样例输出:

    7500

    数据范围:

    n<=100

    算法

     由于矩阵乘机的顺序不同会影响结果,所以可以用区间DP来做。

    代码:

    #include <bits/stdc++.h>
    #define N 1001
    #define ll long long
    using namespace std;
    ll f[N][N];int a[N],b[N],n;
    ll time(int x,int y,int z,int w){
        return x*y*w;
    }
    int main(){
        scanf("%d",&n);
        for (int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                f[i][j]=100000000;
        for (int i=1;i<=n;i++) f[i][i]=0;
        for (int i=1;i<=n;i++)
            for (int j=1;i+j<=n;j++)
                for (int k=0;k<i;k++)
                    f[j][i+j]=min(f[j][i+j],f[j][j+k]+f[j+k+1][i+j]+time(a[j],b[j+k],a[j+k+1],b[i+j]));
        printf("%lld",f[1][n]);
    }

  • 相关阅读:
    JVM视角:值传递or引用传递?【转】
    mybaits trim用法
    Collections.shuffle()用法
    api缓存
    接口开发
    Integer.parseInt()和这个Integer.valueOf()的详解【转】
    MyBatis 通过包含的jdbcType类型
    idea 相关设置
    idea快捷键
    equals 与 ==
  • 原文地址:https://www.cnblogs.com/Yun-17/p/9562388.html
Copyright © 2011-2022 走看看