Advertisement
Josif_tepe

Untitled

Apr 11th, 2024
855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. using namespace std;
  5. typedef long long ll;
  6. typedef vector<vector<int>> matrix;
  7. const int maxn = 1e5 + 10;
  8. const int INF = 2e9;
  9.  
  10. matrix multiply_by_k(matrix A, int k) {
  11.     matrix res = A;
  12.     int n = (int) A.size(), m = (int) A[0].size();
  13.    
  14.     for(int i = 0; i < n; i++) {
  15.         for(int j = 0; j < m; j++) {
  16.             res[i][j] *= k;
  17.         }
  18.     }
  19.     return res;
  20. }
  21. matrix add_two_matrices(matrix A, matrix B) {
  22.     int n_a = (int) A.size(), m_a = (int) A[0].size();
  23.     int n_b = (int) B.size(), m_b = (int) B[0].size();
  24.    
  25.     if(n_a == n_b and m_a == m_b) {
  26.         matrix res = A;
  27.         for(int i = 0; i < n_a; i++) {
  28.             for(int j = 0; j < m_a; j++) {
  29.                 res[i][j] = A[i][j] + B[i][j];
  30.             }
  31.         }
  32.         return res;
  33.     }
  34.     cout << "Dimenziite na matricite treba da se isti za da mozhe da gi sobereme istite" << endl;
  35.     return {{0}};
  36. }
  37. matrix subtract_two_matrices(matrix A, matrix B) {
  38.     int n_a = (int) A.size(), m_a = (int) A[0].size();
  39.     int n_b = (int) B.size(), m_b = (int) B[0].size();
  40.    
  41.     if(n_a != n_b or m_a != m_b) {
  42.         cout << "Dimenziite na matricite treba da se isti za da mozhe da gi sobereme istite" << endl;
  43.         return {{0}};
  44.     }
  45.     matrix res = A;
  46.     for(int i = 0; i < n_a; i++) {
  47.         for(int j = 0; j < m_a; j++) {
  48.             res[i][j] = A[i][j] - B[i][j];
  49.         }
  50.     }
  51.     return res;
  52. }
  53. matrix multiply_two_matrices(matrix A, matrix B) {
  54.     int n_a = (int) A.size(), m_a = (int) A[0].size();
  55.     int n_b = (int) B.size(), m_b = (int) B[0].size();
  56.    
  57.     if(m_a != n_b) {
  58.         cout << "Matricite ne mozhat da se mnozhat" << endl;
  59.         return {{0}};
  60.     }
  61.     matrix res(n_a, vector<int>(m_b, 0));
  62.     for(int i = 0; i < n_a; i++) {
  63.         for(int j = 0; j < m_b; j++) {
  64.             int c = 0;
  65.             for(int k = 0; k < n_a; k++) {
  66.                 c += A[i][k] * B[k][j];
  67.             }
  68.             res[i][j] = c;
  69.         }
  70.     }
  71.    
  72.     return res;
  73. }
  74. int determinant_of_matrix(matrix A) {
  75.     int sz = (int) A.size();
  76.     if(sz == 2) {
  77.         return (A[0][0] * A[1][1]) - (A[0][1] * A[1][0]);
  78.     }
  79.     int determinant = 0;
  80.     int sign = 1;
  81.     for(int i = 0; i < sz; i++) {
  82.         int n = 0, m = 0;
  83.        
  84.         matrix tmp(sz - 1, vector<int>(sz - 1, 0));
  85.         for(int j = 0; j < sz; j++) {
  86.             for(int k = 0; k < sz; k++) {
  87.                 if(j != 0 and k != i) {
  88.                     tmp[n][m] = A[j][k];
  89.                     if(m < sz - 2) {
  90.                         m++;
  91.                     }
  92.                     else {
  93.                         m = 0;
  94.                         n++;
  95.                     }
  96.                 }
  97.             }
  98.            
  99.         }
  100.         determinant = determinant + sign*(A[0][i]) * determinant_of_matrix(tmp);
  101.         sign *= -1;
  102.     }
  103.     return determinant;
  104. }
  105. void print(matrix A) {
  106.     int n = (int) A.size(), m = (int) A[0].size();
  107.     for(int i = 0; i < n; i++) {
  108.         for(int j = 0; j < m; j++) {
  109.             cout << A[i][j] << " ";
  110.         }
  111.         cout << endl;
  112.     }
  113.     cout << endl;
  114. }
  115. int main() {
  116.     matrix A = {
  117.         {1, 3, 5, 9},
  118.         {1, 3, 1, 7},
  119.         {4, 3, 9, 7},
  120.         {5, 2, 0, 9}
  121.        
  122.     };
  123.     matrix B = {
  124.         {1, 2, 3},
  125.         {4, 5, 6},
  126.        
  127.     };
  128.    
  129.     cout << determinant_of_matrix(A) << endl;
  130.     return 0;
  131. }
  132.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement