待修改

 

 

待修改

#include <iostream>
using namespace std;

void MatrixChain(int *p,int n,int m[][10],int s[][10])
{
    for(int i=1;i<=n;i++)
    {
        m[i][i]=0;
        s[i][i]=0;
    }
    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];
            s[i][j]=i;
            for(int k=i+1;k<j;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;
                    s[i][j]=k;
                }
            }
        }
}

int main()
{
    int n;
    cin>>n;
    int *p=new int[n+1];
    int m[10][10],s[10][10];
    for(int i=0;i<=n;i++)
        cin>>p[i];

    MatrixChain(p,n,m,s);
    cout<<"运算次数矩阵:"<<endl;
    for(int i=1;i<=n;i++)
        {
            for(int k=1;k<i;k++)
            cout<<"\t";
            for(int j=i;j<=n;j++)
            cout<<m[i][j]<<"\t";
            cout<<endl;
        }
    cout<<"分割点矩阵:"<<endl;
    for(int i=1;i<=n;i++)
        {
            for(int k=1;k<i;k++)
            cout<<"\t";
            for(int j=i;j<=n;j++)
            cout<<s[i][j]<<"\t";
            cout<<endl;
        }
        
    return 0;
}

 

posted @ 2013-06-16 23:11  再见,少年  Views(176)  Comments(0Edit  收藏  举报