程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 矩陣連乘(備忘錄方法:自頂向下遞歸)

矩陣連乘(備忘錄方法:自頂向下遞歸)

編輯:C++入門知識

矩陣連乘(備忘錄方法:自頂向下遞歸)


#include
#include
#include
#include
using namespace std;

/*
*矩陣連乘(備忘錄方法:自頂向下遞歸)
*/
vector> m;//m[i][j]表示矩陣Ai連乘到Aj的最少運算次數
vector> s;//s[i][j]記錄矩陣Ai和矩陣Aj之間的分割點

//計算該連乘式子的最佳結合方式
int MatrixChain(vector& p,int beg, int end)
{
	if(m[beg][end]>0) return m[beg][end];
	if(beg==end) return 0;
	int u = MatrixChain(p,beg,beg)+MatrixChain(p,beg+1,end)+p[beg-1]*p[beg]*p[end];
	s[beg][end] = beg;
	for (int K = beg+1; K  vec;
	copy(istream_iterator(cin),istream_iterator(),back_inserter(vec));
	int n = vec.size()-1;//一共有n個矩陣相乘
	m = vector>(n+1,vector(n+1,0));//0行0列空余
	s = vector>(n+1,vector(n+1,0));//0行0列空余
	//初始化m數組
	for(int i = 0;i<=n;i++) m[i][i] = 0;
	int u = MatrixChain(vec,1,n);
	cout<<"最優解為計算"<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved