Advertisement
cardel

Multiplicacion de matrices

May 18th, 2018
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <iostream>
  2. #include <climits>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7.    
  8.     int p[] = {30,35,15,5,10,20,25};
  9.     int size = 6;
  10.     int ks[6][6];
  11.     int m[6][6];
  12.    
  13.     for(int i=0;i<6;i++){
  14.         ks[i][i]=0;
  15.         m[i][i]=0;
  16.     }
  17.    
  18.     for(int i=0; i<6; i++){
  19.         for(int j=i+1; j<6; j++){
  20.             ks[j][i]=-1;
  21.             m[j][i]=-1;
  22.         }
  23.     }
  24.    
  25.     for(int d=1; d<size; d++){
  26.        
  27.         int i = 0;
  28.         int j = d;
  29.         while(i<size && j < size){
  30.            
  31.            
  32.             int min = INT_MAX;
  33.             int kElegido = i;
  34.             for(int k=i; k<j; k++){
  35.                 //Regla es por la indexación
  36.                 int costK=m[i][k]+m[k+1][j]+p[i]*p[k+1]*p[j+1];
  37.                 if(costK<min){
  38.                     min = costK;
  39.                     kElegido = k;
  40.                 }
  41.             }
  42.             m[i][j] = min;
  43.             ks[i][j] = kElegido+1;
  44.            
  45.             i++;
  46.             j++;
  47.         }
  48.     }  
  49.    
  50.     cout << "Matriz de costos" << endl;
  51.    
  52.     for(int i=0; i<size; i++){
  53.         for(int j=0; j<size; j++){
  54.             cout << m[i][j] <<" , " ;
  55.         }
  56.         cout << endl;
  57.     }
  58.     cout << endl << "Matriz de ks" << endl;
  59.     for(int i=0; i<size; i++){
  60.         for(int j=0; j<size; j++){
  61.             cout << ks[i][j] <<" , ";
  62.         }
  63.         cout << endl;
  64.     }
  65.  
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement