Guest User

Untitled

a guest
Nov 23rd, 2015
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.69 KB | None | 0 0
  1. #include <limits.h>
  2. #include "lab12.h"
  3.  
  4. void MatrixChainOrder(int p[], int len, int **m, int **s){
  5.     for(int i = 0; i < len - 1; i++)
  6.         m[i][i] = 0;
  7.     for(int l = 1; l < len - 1; l++)
  8.         for(int i = 0; i < len - l + 1; i++){
  9.             int j = i + l - 1;
  10.             m[i][j] = INT_MAX;
  11.             for(int k = i; k < j - 1; k++){
  12.                 int q = m[i][k] + m[k + 1][j] + p[i - 1] * p[k] * p[j];
  13.                 if(q < m[i][j]){
  14.                     m[i][j] = q;
  15.                     s[i][j] = k;
  16.                 }
  17.             }
  18.         }
  19. }
  20.  
  21. #include <iostream>
  22. #include "lab12.h"
  23.  
  24. int main(){
  25.     const int n = 10;
  26.     int p[n] = {10, 50, 30, 7, 25, 60, 15, 80, 55, 30};
  27.     int m[n][n];
  28.     int s[n][n];
  29.  
  30.     MatrixChainOrder(p, n, m, s);
  31.  
  32.     std::cout << "Solution for m and s: " << std::endl;
  33.  
  34. }
Advertisement
Add Comment
Please, Sign In to add comment