// matrix.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdio.h" #include "iostream.h" #include "stdlib.h" int MAX = 1000000; int m[7][7]; int s[7][7]; int p[7] = {5, 10, 3, 12, 5, 50, 6}; int n = 6; void matrixChain() { int i, j, k; int q; //将m[i][i] 赋为零 for(i = 1; i <= n; i ++) { m[i][i] = 0; } for(int l = 2; l <= n; l++) { for(i = 1; i <= n - l + 1; i++) { j= i + l - 1 ; m[i][j] = MAX; for(k = i; k <= j - 1; k ++) { q = m[i][k] + m[k + 1][j] + p[i - 1] * p[k] * p[j]; if( q < m[i][j]) { m[i][j] = q; s[i][j] = k; } } } } } void printChain(int i, int j) { if( i == j) cout<<"A"<<i; else { cout<<"("; printChain(i, s[i][j]); printChain(s[i][j] + 1, j); cout<<")"; } } void main(int argc, char* argv[]) { matrixChain(); printChain(1, n); cout<<endl; }