矩阵代价问题

来源:互联网 发布:linux dns配置 编辑:程序博客网 时间:2024/06/05 00:23
 #include <iostream> #include <cmath> #define MAXSIZE 30;using namespace std;int main(){    int n,m,p;    int q[30];    int a[30][30];    cout<<"矩阵数量和第一个矩阵的i"<<endl;    cin>>n>>m;    cout<<"两两矩阵相同的行列"<<endl;    for(int i=0;i<n;i++)    {        cin>>q[i];    }    for(int h=0;h<n-1;h++)    {        if(h==0)        a[h][h+1]=m*q[h]*q[h+1];        else        a[h][h+1]=q[h-1]*q[h]*q[h+1];    }    for(int l=2;l<n;l++)    {        for(int i=0;i<n-l+1;i++)        {            int j=i+l-2;            a[i][j]=999999;            for(int k=i;k<j;k++)            {                p=a[i][k]+a[k+1][j]+a[i][k]*a[k+1][j]/q[k];                if(p<a[i][j])                {                    a[i][j]=p;                }            }        }    }    cout<<a[1][n]<<endl;    return 0;}

计算矩阵乘法的最小代价。


优化子结构:计算最小代价必然包括子问题的最小代价;

重叠子问题:子问题的代价被上一层利用

0 0
原创粉丝点击