반응형

 

 

2740번: 행렬 곱셈

첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개

www.acmicpc.net

 

#include <iostream>
#include <vector>
using namespace std;

void makeVector(vector<int>& Mat, int row, int col);

int main() {

	int N, M, K;
	vector<int> A, B, AB;

	cin >> N >> M;
	A.reserve(sizeof(int) * N * M);
	makeVector(A, N, M);
	
	cin >> M >> K;
	B.reserve(sizeof(int) * M * K);
	makeVector(B, M, K);

	AB.reserve(sizeof(int) * N * K);

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < K; j++) {
			int ele = 0;
			for (int k = 0; k < M; k++) {
				ele += A[i * M + k] * B[j + k * K];
			}
			cout << ele << ' ';
		}
		cout << endl;
	}

	return 0;
}

void makeVector(vector<int>& Mat, int row, int col) {
	int tmp;
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < col; j++) {
			cin >> tmp;
			Mat.push_back(tmp);
		}
	}
}
입력 :
3 2
1 2
3 4
5 6
2 3
-1 -2 0
0 0 3

출력 :
-1 -2 6
-3 -6 12
-5 -10 18
반응형

+ Recent posts