Advertisement
StefanPopescu

PD Inmultirea optima de matrici

Dec 7th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. /*
  2. intrare .txt
  3. 4
  4. 3 4 9 5 2
  5. n=4 numarul de matrici; prima are dimensiunile (3,4) a doua (4,9) a treia (9,5), a 4-a (5,2)
  6. */
  7.  
  8.  
  9. #include<iostream>
  10. #include<cstdio>
  11. #include<fstream>
  12. #include<vector>
  13. #include<limits>
  14. #include<algorithm>
  15. using namespace std;
  16.  
  17.  
  18.  
  19. int main() {
  20.     int n, i, j, k;
  21.     vector<int> P;
  22.     int M[100][100];
  23.  
  24.     ifstream fin("intrare.txt");
  25.     fin >> n;
  26.     for (i = 0; i <= n; i++)
  27.         for (j = 0; j <= n; j++)
  28.             M[i][j] = 999;
  29.     P.resize(n + 1);
  30.     for (i = 0; i <= n; i++) fin >> P[i];
  31.     fin.close();
  32.  
  33.  
  34.  
  35.     for (i = 1; i <= n; i++)
  36.         M[i][i] = 0;
  37.  
  38.  
  39.     for (int len = 1; len < n; len++)
  40.         for (i = 1; i + len <= n; i++)
  41.             for (k = i; k < i + len; k++)
  42.                 M[i][i + len] = min(M[i][i + len], M[i][k] + M[k + 1][i + len] + P[i - 1] * P[k] * P[i + len]);
  43.  
  44.     cout << M[1][n] << endl << endl; // costul inmultirii celor n matrici
  45.  
  46.     for (i = 1; i <= n; i++) {
  47.         for (j = 1; j <= n; j++)
  48.             printf("%3d ", M[i][j]);
  49.         printf("\n");
  50.     }
  51.  
  52.     system("PAUSE");
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement