본문 바로가기

코딩테스트

[C++] 행렬 곱셈

숙제 4 (행렬 곱셈)

정수의 원소를 가지는 개의 행렬이 주어졌을 , 행렬의 곱을 계산하는 프로그램을 작성하시오.

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

int main(){
	int r,s,t;
	//arr1[r][s], arr2[s][t], out[r][t]
	cin>>r>>s>>t;
	int **arr1=new int*[r];
	int **arr2=new int*[s];
	int **out=new int*[r];
	for(int i=0;i<r;i++){
		arr1[i]=new int[s];
		out[i]=new int [t];}

	for(int i=0;i<s;i++) arr2[i]=new int[t];
	

	for(int i=0;i<r;i++){
		for(int j=0;j<s;j++) cin>>arr1[i][j];
	}

	for(int i=0;i<s;i++){
		for(int j=0;j<t;j++) cin>>arr2[i][j];
	}
	for(int i=0;i<r;i++){
		for(int j=0;j<t;j++){
			for(int k=0;k<s;k++) out[i][j]+=(arr1[i][k]*arr2[k][j]);
		}
	}
    int c=0;
	for(int i=0;i<r;i++){
	    for(int j=0;j<t;j++) {
		    cout<<out[i][j]<<" ";}
		if(i<r-1) cout<<endl;
	}

	for(int i=0;i<r;i++){
		delete[] arr1[i];
		delete[] out[i];}


	for(int i=0;i<s;i++) delete[] arr2[i];
	
	delete[] arr1;
	delete[] arr2;
	delete[] out;
	cout<<endl;
	return 0;
}

'코딩테스트' 카테고리의 다른 글

[C++] 제일 작은 수 제거하기  (0) 2021.06.28
[C++] Happy Number  (0) 2021.06.27
[C++] 행렬 덧셈  (0) 2021.06.27
[C++] 집합 연산  (0) 2021.06.27
[C++] 해밍 수 (Hamming Number)  (0) 2021.06.27