zoukankan      html  css  js  c++  java
  • 矩阵连乘

    这个地方要注意动态数组的初始化:

    下面是代码,有两种动态数组的初始化方式

    #include<iostream>
    #include<cstdlib>
    using namespace std;
    void MatrixChain(int *p,int n,int * *m,int * *s)
    {
    	for(int i = 1;i <= n;i++)
    	m[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;
    			}
    		}
    	}
    	cout <<"最少数乘次数为:" << m[1][n] << endl;
    }
    void Traceback(int i,int j,int **s)
    {
    	if(i == j)
    	return ;
    	Traceback(i,s[i][j],s);
    	Traceback(s[i][j] + 1,j,s);
    	cout << "Multiply A" << i << "," << s[i][j];
    	cout << "and A" << (s[i][j] + 1) << "," << j << endl;
    }
    int main()
    {
    	int n;
    	cin >> n;
    	int list[n + 1];
        /*int** m = new int*[n+1];//动态数组的初始化方式1
        m[0] = new int[(n+1)*(n+1)];
        int** s = new int*[n+1];
        s[0] = new int[(n+1)*(n+1)];
        for(int i = 1; i < n+1; i ++)
        {
            m[i] = m[i-1] + n+1;
            s[i] = s[i-1] + n+1;
        }*/
        int **s = new int *[n + 1];//动态数组的初始化方式二
        int **m = new int *[n + 1];
        for(int i=0;i< n + 1;i++)
        {
            s[i] = new int[n + 1];
            m[i] = new int[n + 1];
        }
    	for(int i = 0;i < n + 1;i++)
    	cin >> list[i];
    	if(n == 1)
    	cout << "计算次数为:0" << endl;
    	else
    	MatrixChain(list,n,m,s);
    	Traceback(1,n,s);
    	return 0;
    }
    /*
    6
    30 35 15 5 10 20 25
    */

  • 相关阅读:
    从mysql中dump数据到本地
    浮点数为何不能进行相等性比较
    Flume安装
    Java 一致性Hash算法的学习
    zookeeper 四字命令的使用
    Mac Eclipse安装lombok
    Linux Tomcat8 启动堆内存溢出
    Netty5+Jboss(Marshalling)完成对象序列化传输
    Elasticsearch基础
    Elasticsearch设置最大返回条数
  • 原文地址:https://www.cnblogs.com/lu1nacy/p/10016666.html
Copyright © 2011-2022 走看看