Given a matrix **arr[][]** of size **N x M**, and two numbers **R** and **C**, the task is to enlarge this matrix such that each element of the original matrix occurs in **R** rows and **C** columns in the enlarged matrix.

**Examples:**

Input:arr[][] = {{1, 2, 3}, {4, 5, 6}} R = 3, C = 2

Output:

1 1 2 2 3 3 4 4 5 5 6 6

1 1 2 2 3 3 4 4 5 5 6 6

1 1 2 2 3 3 4 4 5 5 6 6

Explanation:

Every element of the original matrix appears in 3 rows and 2 columns in the enlarged matrix.

Input:arr = {{1, 2}}, R = 2, C = 3

Output:

1 1 1 2 2 2

1 1 1 2 2 2

Explanation:

Each element of the original matrix appears in 2 rows and 3 columns in the enlarged matrix.

**Approach:** This problem can be solved by keeping either the number of rows or columns fixed. In this article, the number of rows is fixed. Therefore, for any matrix of dimension N x M, the number of rows in the final answer would be R.

The idea is to first convert the given matrix into a one dimensional array (i.e) flatten the given matrix. Now, for every element in the flattened matrix, append the values in R rows and C columns of the final enlarged matrix.

Below is the implementation of the above approach:

## C++

`// C++ program to enlarge a matrix ` `// such that each element occurs in ` `// R rows and C columns ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to convert the matrix ` `// into a 1-D array ` `vector<` `int` `> oneD(vector<vector<` `int` `>> &matrix){ ` ` ` ` ` `// Variable to store the ` ` ` `// given matrix ` ` ` `vector<` `int` `> m; ` ` ` ` ` `// Iterating through all the ` ` ` `// elements of the matrix ` ` ` `for` `(` `int` `i = 0; i < matrix.size(); ++i) ` ` ` `for` `(` `int` `j = 0; j < matrix[0].size(); ++j) ` ` ` `// Adding the element into the ` ` ` `// defined matrix ` ` ` `m.push_back(matrix[i][j]); ` ` ` ` ` `return` `m; ` `} ` ` ` `// Function to enlarge a matrix ` `// such that each element occurs ` `// in R rows and C columns ` `vector<vector<` `int` `>> dimensions(` `int` `R, ` `int` `C, vector<` `int` `> matrix) { ` ` ` ` ` `// Initializing the enlarged ` ` ` `// matrix ` ` ` `vector<vector<` `int` `>> ans(R+1); ` ` ` ` ` `// Variables to iterate over ` ` ` `// the matrix ` ` ` `int` `ctr = 0; ` ` ` `int` `r = 0; ` ` ` ` ` `while` `(ctr < matrix.size()) { ` ` ` ` ` `// To keep the rows in the ` ` ` `// range [0, R] ` ` ` `r = r % R; ` ` ` `int` `c = 0; ` ` ` `while` `(c < C) { ` ` ` `// In order to fix the number ` ` ` `// of columns, the above r ` ` ` `// statement can be commented ` ` ` `// and this can be uncommented ` ` ` `// c = c % C ` ` ` `for` `(` `int` `i = 0; i < R; ++i) ` ` ` `ans[i].push_back(matrix[ctr]); ` ` ` ` ` `c += 1; ` ` ` `} ` ` ` `ctr += 1; ` ` ` `r += 1; ` ` ` `} ` ` ` ` ` `return` `ans; ` `} ` ` ` `// Driver code ` `int` `main() { ` ` ` ` ` `vector<vector<` `int` `>> arr = {{1, 2}, {3, 4}}; ` ` ` `int` `R = 2, C = 3; ` ` ` ` ` `vector<vector<` `int` `>> ans = dimensions(R, C, oneD(arr)); ` ` ` ` ` `// Print the enlarged matrix ` ` ` `for` `(` `int` `i = 0; i < ans.size(); ++i) { ` ` ` ` ` `for` `(` `int` `j = 0; j < ans[i].size(); ++j) { ` ` ` `cout << ans[i][j] << ` `" "` `; ` ` ` `} ` ` ` ` ` `cout<<endl; ` ` ` `} ` ` ` ` ` `return` `0; ` `} ` ` ` `// This code is contributed by Sanjit_Prasad ` |

*chevron_right*

*filter_none*

## Python3

`# Python program to enlarge a matrix ` `# such that each element occurs in ` `# R rows and C columns ` ` ` `# Function to convert the matrix ` `# into a 1-D array ` `def` `oneD(matrix): ` ` ` ` ` `# Variable to store the ` ` ` `# given matrix ` ` ` `m ` `=` `[] ` ` ` ` ` `# Iterating through all the ` ` ` `# elements of the matrix ` ` ` `for` `i ` `in` `range` `(` `len` `(matrix)): ` ` ` `for` `j ` `in` `range` `(` `len` `(matrix[` `0` `])): ` ` ` ` ` `# Adding the element into the ` ` ` `# defined matrix ` ` ` `m.append(matrix[i][j]) ` ` ` ` ` `return` `m[:] ` ` ` `# Function to enlarge a matrix ` `# such that each element occurs ` `# in R rows and C columns ` `def` `dimensions(R, C, matrix): ` ` ` ` ` `# Initializing the enlarged ` ` ` `# matrix ` ` ` `ans ` `=` `[[]] ` `*` `R ` ` ` ` ` `# Variables to iterate over ` ` ` `# the matrix ` ` ` `ctr ` `=` `0` ` ` `r ` `=` `0` ` ` ` ` ` ` `while` `(ctr < ` `len` `(matrix)): ` ` ` ` ` `# To keep the rows in the ` ` ` `# range [0, R] ` ` ` `r ` `=` `r ` `%` `R ` ` ` `c ` `=` `0` ` ` `while` `(c < C): ` ` ` ` ` `# In order to fix the number ` ` ` `# of columns, the above r ` ` ` `# statement can be commented ` ` ` `# and this can be uncommented ` ` ` `# c = c % C ` ` ` `ans[r].append(matrix[ctr]) ` ` ` ` ` `c` `+` `=` `1` ` ` ` ` `ctr ` `+` `=` `1` ` ` `r` `+` `=` `1` ` ` ` ` ` ` `return` `ans ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `'__main__'` `: ` ` ` ` ` `arr ` `=` `[[` `1` `, ` `2` `], [` `3` `, ` `4` `]] ` ` ` `R, C ` `=` `2` `, ` `3` ` ` ` ` `ans ` `=` `dimensions(R, C, oneD(arr)) ` ` ` ` ` `# Print the enlarged matrix ` ` ` `for` `i ` `in` `ans: ` ` ` `print` `(i) ` |

*chevron_right*

*filter_none*

**Output:**

[1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4] [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.

## Recommended Posts:

- Count pairs (p, q) such that p occurs in array at least q times and q occurs at least p times
- Ways of filling matrix such that product of all rows and all columns are equal to unity
- Remove first X rows and columns from a matrix
- Remove any corner X rows and columns from a matrix
- Number of rows and columns in a Matrix that contain repeated values
- Maximum increase in value of Matrix to keep maximum rows and columns unchanged
- Minimize cost to convert a given matrix to another by flipping columns and reordering rows
- Sorting rows of matrix in ascending order followed by columns in descending order
- Sorting rows of matrix in descending order followed by columns in ascending order
- Minimum element of each row and each column in a matrix
- Count rows/columns with sum equals to diagonal sum
- Check if all rows of a matrix are circular rotations of each other
- Sum of product of each element with each element after it
- Form an array of distinct elements with each element as sum of an element from each array
- Sum of columns of a 2-D Matrix where first element is odd
- Find a common element in all rows of a given row-wise sorted matrix
- Count rows in a matrix that consist of same element
- Element which occurs consecutively in a given subarray more than or equal to K times
- Program to find the Sum of each Row and each Column of a Matrix
- Count columns to be deleted to make each row sorted

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.