矩阵连乘问题-构造最优解

题目描述

使用动态规划算法求解矩阵连乘问题。

输入

每组数据包括两行,第一行为数组长度n,第二行为存储矩阵维数的一维数组。

输出

矩阵连乘最优计算次序。

样例输入 Copy

7
30 35 15 5 10 20 25

样例输出 Copy

A[2:2] * A[3:3]
A[1:1] * A[2:3]
A[4:4] * A[5:5]
A[4:5] * A[6:6]
A[1:3] * A[4:6]

#include
#include
#include

using namespace std;

void matr(int n,int *p,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>n){
		arrx = (int*)malloc(n*sizeof(int));
		arry = (int**)malloc((n+1)*sizeof(int*));
		arrz = (int**)malloc((n+1)*sizeof(int*));
		for(int i=0;i<=n;i++){
			arry[i]=(int*)malloc((n+1)*sizeof(int));
			arrz[i]=(int*)malloc((n+1)*sizeof(int));
		}
		for(int i=0;i>arrx[i];
		}
		matr(n,arrx,arry,arrz);
	    best(arrz,1,n-1);
	}
}

你可能感兴趣的:(个人刷题)