Multiplication of two matrices

Given two matrices, this function will multiply the two matrices and prints the result. Here, necessary and sufficient condition is the number of columns in A should be equal to the number of rows in matrix B.

Example

INPUT

A[4][4] = { {1, 1, 1, 1},
              {1, 6, 7, 6},
              {6, 3, 7, 12},
              {4, 4, 4, 4}};

B[4][4] = { {1, 1, 1, 1},
                    {2, 2, 2, 2},
                    {3, 3, 3, 3},
                    {4, 9, 1, 7}};

OUTPUT
    10  15  7  13 
    58  88  40  76 
    81  141  45  117 
    40  60  28  52 

In the above example, we got the first element in output by multiplying all the respective elements in first row of matrix A with the elements in the first column of matrix B and adding them. Similarly for the second element in first row of the output, we need to take first row of matrix A and second column of matrix B. In this way we got all the elements in output matrix

Time Complexity: O(n^3),

here n is the size of the matrix

Algorithm

1. Simply run three loops
2. Loop for each row in matrix A with variable i
3. Inside the above loop, Loop for each column in matrix B with variable j
4. Inside the above two loops, Loop for each row element in matrix A with variable k and each column element in matrix B with variable k  ie, A[i][k] and B[k][j] .
5. we will find the product of each row element in A with each colum element in B. ie, A[i][k] * B[k][j] and add all the products and store in new matrix C ie, C[i][j]
6. matrix C is the multiplication output

C++ Program

#include <bits/stdc++.h>
using namespace std;
#define N 4
int main()
{
	int A[N][N] = { {1, 1, 1, 1},
					{1, 6, 7, 6},
					{6, 3, 7, 12},
					{4, 4, 4, 4}};

	int B[N][N] = { {1, 1, 1, 1},
                    {2, 2, 2, 2},
                    {3, 3, 3, 3},
                    {4, 9, 1, 7}};
	
	int C[N][N];
	for(int i=0; i <N; i++)
	{
		for(int j=0; j<N; j++)
			{int sum = 0;
				for(int k=0;k<N;k++)
				{
					sum += A[i][k] * B[k][j];
				}
			C[i][j] = sum;
			cout <<C[i][j] <<"  ";
			}
		cout<<endl;
	}
	

	return 0;
}
Try It


< Prev
Scroll to Top