import java.io.*;
class GFG {
// Function to print Matrix
static void printMatrix(int M[][], int rowSize,
int colSize)
{
for (int i = 0; i < rowSize; i++) {
for (int j = 0; j < colSize; j++)
System.
out.
print(M
[i
][j
] + " ");
}
}
// Function to multiply
// two matrices A[][] and B[][]
static void multiplyMatrix(int row1, int col1,
int A[][], int row2,
int col2, int B[][])
{
int i, j, k;
// Print the matrices A and B
System.
out.
println("\nMatrix A:"); printMatrix(A, row1, col1);
System.
out.
println("\nMatrix B:"); printMatrix(B, row2, col2);
// Check if multiplication is Possible
if (row2 != col1) {
"\nMultiplication Not Possible");
return;
}
// Matrix to store the result
// The product matrix will
// be of size row1 x col2
int C[][] = new int[row1][col2];
// Multiply the two matrices
for (i = 0; i < row1; i++) {
for (j = 0; j < col2; j++) {
for (k = 0; k < row2; k++)
C[i][j] += A[i][k] * B[k][j];
}
}
// Print the result
System.
out.
println("\nResultant Matrix:"); printMatrix(C, row1, col2);
}
// Driver code
public static void main
(String[] args
) {
int row1 = 4, col1 = 3, row2 = 3, col2 = 4;
int A[][] = { { 1, 1, 1 },
{ 2, 2, 2 },
{ 3, 3, 3 },
{ 4, 4, 4 } };
int B[][] = { { 1, 1, 1, 1 },
{ 2, 2, 2, 2 },
{ 3, 3, 3, 3 } };
multiplyMatrix(row1, col1, A, row2, col2, B);
}
}
CmltcG9ydCBqYXZhLmlvLio7CmNsYXNzIEdGRyB7CiAgICAvLyBGdW5jdGlvbiB0byBwcmludCBNYXRyaXgKICAgIHN0YXRpYyB2b2lkIHByaW50TWF0cml4KGludCBNW11bXSwgaW50IHJvd1NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sU2l6ZSkKICAgIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd1NpemU7IGkrKykgewogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbFNpemU7IGorKykKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoTVtpXVtqXSArICIgIik7CgogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gRnVuY3Rpb24gdG8gbXVsdGlwbHkKICAgIC8vIHR3byBtYXRyaWNlcyBBW11bXSBhbmQgQltdW10KICAgIHN0YXRpYyB2b2lkIG11bHRpcGx5TWF0cml4KGludCByb3cxLCBpbnQgY29sMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBBW11bXSwgaW50IHJvdzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sMiwgaW50IEJbXVtdKQogICAgewogICAgICAgIGludCBpLCBqLCBrOwoKICAgICAgICAvLyBQcmludCB0aGUgbWF0cmljZXMgQSBhbmQgQgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG5NYXRyaXggQToiKTsKICAgICAgICBwcmludE1hdHJpeChBLCByb3cxLCBjb2wxKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlxuTWF0cml4IEI6Iik7CiAgICAgICAgcHJpbnRNYXRyaXgoQiwgcm93MiwgY29sMik7CgogICAgICAgIC8vIENoZWNrIGlmIG11bHRpcGxpY2F0aW9uIGlzIFBvc3NpYmxlCiAgICAgICAgaWYgKHJvdzIgIT0gY29sMSkgewoKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAogICAgICAgICAgICAgICAgIlxuTXVsdGlwbGljYXRpb24gTm90IFBvc3NpYmxlIik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIE1hdHJpeCB0byBzdG9yZSB0aGUgcmVzdWx0CiAgICAgICAgLy8gVGhlIHByb2R1Y3QgbWF0cml4IHdpbGwKICAgICAgICAvLyBiZSBvZiBzaXplIHJvdzEgeCBjb2wyCiAgICAgICAgaW50IENbXVtdID0gbmV3IGludFtyb3cxXVtjb2wyXTsKCiAgICAgICAgLy8gTXVsdGlwbHkgdGhlIHR3byBtYXRyaWNlcwogICAgICAgIGZvciAoaSA9IDA7IGkgPCByb3cxOyBpKyspIHsKICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvbDI7IGorKykgewogICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IHJvdzI7IGsrKykKICAgICAgICAgICAgICAgICAgICBDW2ldW2pdICs9IEFbaV1ba10gKiBCW2tdW2pdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBQcmludCB0aGUgcmVzdWx0CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJcblJlc3VsdGFudCBNYXRyaXg6Iik7CiAgICAgICAgcHJpbnRNYXRyaXgoQywgcm93MSwgY29sMik7CiAgICB9CgogICAgLy8gRHJpdmVyIGNvZGUKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgICB7CgogICAgICAgIGludCByb3cxID0gNCwgY29sMSA9IDMsIHJvdzIgPSAzLCBjb2wyID0gNDsKCiAgICAgICAgaW50IEFbXVtdID0geyB7IDEsIDEsIDEgfSwKICAgICAgICAgICAgICAgICAgICAgIHsgMiwgMiwgMiB9LAogICAgICAgICAgICAgICAgICAgICAgeyAzLCAzLCAzIH0sCiAgICAgICAgICAgICAgICAgICAgICB7IDQsIDQsIDQgfSB9OwoKICAgICAgICBpbnQgQltdW10gPSB7IHsgMSwgMSwgMSwgMSB9LAogICAgICAgICAgICAgICAgICAgICAgeyAyLCAyLCAyLCAyIH0sCiAgICAgICAgICAgICAgICAgICAgICB7IDMsIDMsIDMsIDMgfSB9OwoKICAgICAgICBtdWx0aXBseU1hdHJpeChyb3cxLCBjb2wxLCBBLCByb3cyLCBjb2wyLCBCKTsKICAgIH0KfQ==