标签:
题目描述:
有若干个矩阵{Ai},元素都为整数且已知矩阵大小。
如果要计算所有矩阵的乘积A1 * A2 * A3 .. Am,最少要多少次整数乘法?
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; const int MAX=10000; int m[101][MAX]; int dp(int *p,int n){ for(int r=2;r<=n;r++){ for(int i=1;i<=n-r+1;i++){ int j=i+r-1; m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j]; for(int k=i+1;k<=j-1;k++){ int t= m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j]; if(t<m[i][j]){ m[i][j]=t; } } } } return m[1][n]; } int main(){ int n; scanf("%d",&n); memset(m,0,sizeof(m)); int p[120]; for(int i=0;i<n;i++){ scanf("%d",p+i); } int res=dp(p,n-1); printf("%d\n",res); return 0; }
算法时间复杂度为O(n3)。
标签:
原文地址:http://www.cnblogs.com/jxzheng/p/4379568.html