SSL·矩阵链相乘【DP】

Description–

在这里插入图片描述


Input–

第一行,n表示矩阵的个数(n<=100)。
第二行,n+1个数。

Output–

最小的乘法次数


Sample Input–

5
5 10 4 6 10 2

Sample Output–

348


解题思路

  • 乘法交换律
  • 乘法结合律
  • 也就是说我们可以
    这样分
    在这里插入图片描述
    状态转移方程:
    f[i][j]=min(f[i][j],f[i][k-1]+f[k][j]+a[i]*a[k]*a[j+1])

代码

  • 感谢fy同学

       #include<cstdio>
    int n,a[110],c[110][110];
    int min(int asa,int b)
    {
    	if(asa<b) return asa;
    	return b;
    }
    int main()
    {
    	scanf("%d",&n);
    	for (int i=1;i<=n+1;i++)
    	  scanf("%d",&a[i]);
        for (int d=2;d<=n;d++)
        for (int i=1;i<=n-d+1;i++)
          {
              int j=i+d-1,t;
              c[i][j]=10000000;
              for(int k=i+1;k<=j;k++)
              	c[i][j]=min(c[i][j],c[i][k-1]+c[k][j]+a[i]*a[j+1]*a[k]);
          }
        printf("%d",c[1][n]);
    	  
    	return 0;
    }
    

    —再次感谢fy同学—

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值