백준 단계별로 풀어보기 [분할 정복] 행렬 곱셈
https://www.acmicpc.net/problem/2740
[풀이]
n*m의 행렬 a와 m*k의 행렬 b가 주어졌을 때, 두 행렬을 곱하는 프로그램. O(n^3)의 시간복잡도.
[코드]
#include <iostream>
#include <string>
#include <algorithm>
int mat_a[100][100];
int mat_b[100][100];
int mat_c[100][100];
int main() {
//n*m의 행렬 a와 m*k의 행렬 b가 주어졌을 때, 두 행렬을 곱하는 프로그램.
int n, m, k;
std::cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
std::cin >> mat_a[i][j];
}
}
std::cin >> m >> k;
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
std::cin >> mat_b[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int l = 0; l < k; l++) {
for (int j = 0; j < m; j++) {
mat_c[i][l] += mat_a[i][j] * mat_b[j][l];
}
}
}
for (int i = 0; i < n; i++) {
for (int l = 0; l < k; l++) {
std::cout << mat_c[i][l] << " ";
}
std::cout << "\n";
}
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[c++] 백준 1149 RGB 거리 (0) | 2021.07.29 |
---|---|
[c++] 백준 1920 수 찾기 (0) | 2021.07.28 |
[c++] 백준 1992 쿼드트리 (0) | 2021.07.27 |
[c++] 백준 2630 색종이 만들기 (0) | 2021.07.27 |
[c++] 백준 11866 요세푸스 문제 0 (0) | 2021.07.27 |