fork download
  1. #include <iostream>
  2. #include <climits>
  3.  
  4. const int n = 10;
  5.  
  6. void MatrixChainOrder(int p[], int len, int m[][n], int s[][n]){
  7. for(int i = 0; i < len - 1; i++)
  8. m[i][i] = 0;
  9. for(int l = 1; l < len - 1; l++)
  10. for(int i = 0; i < len - l + 1; i++){
  11. int j = i + l - 1;
  12. m[i][j] = INT_MAX;
  13. for(int k = i; k < j - 1; k++){
  14. int q = m[i][k] + m[k + 1][j] + p[i - 1] * p[k] * p[j];
  15. if(q < m[i][j]){
  16. m[i][j] = q;
  17. s[i][j] = k;
  18. }
  19. }
  20. }
  21. }
  22.  
  23. int main(){
  24. int p[n] = {10, 50, 30, 7, 25, 60, 15, 80, 55, 30};
  25. int m[n][n];
  26. int s[n][n];
  27.  
  28. MatrixChainOrder(p, n, m, s);
  29.  
  30. std::cout << "Solution for m and s: " << std::endl;
  31.  
  32. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
Solution for m and s: