44 lines
1.1 KiB
C++
44 lines
1.1 KiB
C++
#include <vector>
|
|
#include <iostream>
|
|
using std::size_t;
|
|
|
|
std::vector<int> get_column(std::vector<std::vector<int>> input, int index){
|
|
std::vector<int> result;
|
|
for(int i = 0; i<input.size(); i++){
|
|
result.push_back(input[i][index]);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
int multiply(std::vector<int> first, std::vector<int> second){
|
|
int result = 0;
|
|
for(int i = 0; i<first.size(); i++){
|
|
result += first[i] * second[i];
|
|
}
|
|
return result;
|
|
}
|
|
|
|
std::vector<std::vector<int>> matrix_multiplication(std::vector<std::vector<int>> &a, std::vector<std::vector<int>> &b, size_t n){
|
|
std::vector<std::vector<int>> result;
|
|
std::vector<int> row;
|
|
for(int i=0; i<n;i++){
|
|
for(int j=0; j<n; j++){
|
|
row.push_back(
|
|
multiply(a[i], get_column(b, j))
|
|
);
|
|
}
|
|
result.push_back(row);
|
|
row = {};
|
|
}
|
|
return result;
|
|
}
|
|
|
|
|
|
int main(){
|
|
std::vector<std::vector<int>> test1 = {{1,2},{3,4}};
|
|
std::vector<std::vector<int>> test2 = {{1,2},{3,4}};
|
|
std::vector<std::vector<int>> result = matrix_multiplication(test1, test2, 2);
|
|
std::cout << result[1][1];
|
|
}
|
|
|