본문 바로가기
IT/알고리즘 및 자료구조

[알고리즘] 구조체를 이용한 행렬의 곱 구현

by 빨강자몽 2018. 8. 11.

크기가 d인 행렬(d*d)의 곱 a*b를 구하는 코드


실행 코드

#include <iostream>
#pragma warning(disable:4996)
using namespace std;

int d;
struct st
{
    int m[55][55] = {};
    st operator*(st a) const
    {
        st ret;
        for (int i = 0; i < d; i++)
            for (int j = 0; j < d; j++)
                for (int k = 0; k < d; k++)
                    ret.m[i][j] = (ret.m[i][j] + m[i][k] * a.m[k][j]);
        return ret;
    }
}a,b,c;

int main()
{
    d=3;
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            a.m[i][j]=i,b.m[i][j]=i+j;
    c=a*b;
    printf(">>> a행렬\n");
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<3;j++)
            printf("%2d ",a.m[i][j]);
        printf("\n");
    }
    printf(">>> b행렬\n");
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<3;j++)
            printf("%2d ",b.m[i][j]);
        printf("\n");
    }
    printf(">>> c행렬\n");
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<3;j++)
            printf("%2d ",c.m[i][j]);
        printf("\n");
    }
    return 0;
}

실행 결과