计算例程,很简单.递归地完成,就可以了.接口部分可能略复杂,但足够简便.是很好的实现方式. // matrixChainOrder.cpp -- 2011-06-12-10.27 // Complete at 2011-06-14-00.27 #include "stdafx.h" #include <iostream> #include "matrix.h" const int INFINITY = ~(1 << 31) ; int _tmain(int argc, _TCHAR* argv[]) { int array[6] = {3, 5, 4, 2, 6, 3} ; int array1st[15] = {3, 3, 1, 5, 4, 2, 4, 5, 6, 4, 4, 7, 4, 6, 8} ; int array2nd[20] = {1, 3, 5, 9, 7, 6, 5, 4, 2, 1, 4, 6, 7, 8, 2, 3, 9, 4, 5, 1} ; int array3rd[8] = {5, 4, 3, 2, 1, 7, 6, 8} ; int array4th[12] = {5, 7, 9, 1, 2, 4, 3, 5, 6, 8, 9, 10} ; int array5th[18] = {8, 7, 6, 1, 2, 3, 4, 5, 6, 8, 7, 9, 4, 1, 2, 3, 6, 4} ; Matrix<int> mArray[5] = { Matrix<int> (array1st, 15, 3, 5), Matrix<int> (array2nd, 20, 5, 4), Matrix<int> (array3rd, 8, 4, 2), Matrix<int> (array4th, 12, 2, 6), Matrix<int> (array5th, 18, 6, 3), } ; Matrix<int> result ; result.OptimalMultiplication (mArray, 5) ; result.Show () ; std ::cin.get () ; return 0 ; }