SSL·矩阵链相乘【DP】

矩阵链相乘【DP】SSL 1596

    • Description--
    • Input--
    • Output--
    • Sample Input--
    • Sample Output--
    • 解题思路
    • 代码

Description–

SSL·矩阵链相乘【DP】_第1张图片


Input–

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

Output–

最小的乘法次数


Sample Input–

5
5 10 4 6 10 2

Sample Output–

348


解题思路

  • 乘法交换律
  • 乘法结合律
  • 也就是说我们可以
    这样分
    SSL·矩阵链相乘【DP】_第2张图片
    状态转移方程:
    f[i][j]=min(f[i][j],f[i][k-1]+f[k][j]+a[i]*a[k]*a[j+1])

代码

  • 感谢fy同学

       #include
    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同学—

你可能感兴趣的:(DP)