# Remove any corner X rows and columns from a matrix

Given a NxN matrix and an integer X. The task is to remove X rows and X columns from the NxN matrix.

• Remove first X rows and columns from the matrix.

Examples:

```Input: n = 4,
arr[][] = {{20, 2, 10, 16},
{20, 17, 11, 6},
{14, 16, 1, 3},
{10, 2, 17, 4}},
x = 2
Output:
1 3
17 4

Explanation:
Here the value of X is 2.
So remove the first 2 rows
and the first 2 columns from the matrix.
Hence the output is
1 3
17 4

```

Simple Approach:

• Skip the first x rows and columns and print the remaining elements in the matrix.
• Start from the xth row and print till the n-1th row.
• Start from the xth column and print till the n-1th column.

Implementation:

## C++

 `#include ` `using` `namespace` `std;`   `// Function to remove first x` `// rows and columns from an array` `void` `remove_X_Rows_and_Columns(``int``* a, ``int` `n, ``int` `x)` `{`   `    ``cout << ``"\nRemoving First "` `<< x` `         ``<< ``" rows and columns:\n"``;`   `    ``// Start from the xth row` `    ``// and print till n-1th row` `    ``for` `(``int` `i = x; i < n; i++) {`   `        ``// Start from the xth column` `        ``// and print till the n-1th column` `        ``for` `(``int` `j = x; j < n; j++) {`   `            ``// Accessing the array using pointers` `            ``cout << *((a + i * n) + j) << ``" "``;` `        ``}` `        ``cout << endl;` `    ``}` `}`   `// Print the matrix` `void` `printMatrix(``int``* a, ``int` `n)` `{`   `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``for` `(``int` `j = 0; j < n; j++) {` `            ``cout << *((a + i * n) + j) << ``" "``;` `        ``}` `        ``cout << endl;` `    ``}` `}`   `int` `main()` `{` `    ``int` `n = 4;`   `    ``// get the array inputs` `    ``int` `a[n][n];` `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``for` `(``int` `j = 0; j < n; j++) {` `            ``a[i][j] = (i * 10 + j);` `        ``}` `    ``}`   `    ``// Print the matrix` `    ``cout << ``"Original Matrix:\n"``;` `    ``printMatrix((``int``*)a, n);`   `    ``int` `x = 2;`   `    ``// passing the two dimensional` `    ``// array using a single pointer` `    ``remove_X_Rows_and_Columns((``int``*)a, n, x);`   `    ``return` `0;` `}`

## Python3

 `# Python3 implementation of the above approach` ` `  `# Function to remove first x` `# rows and columns from an array` `def` `remove_X_Rows_and_Columns(a, n, x):`   `    ``print``(``"Removing First "``, x, ` `          ``" rows and columns:"``)`   `    ``# Start from the xth row` `    ``# and pr till n-1th row` `    ``for` `i ``in` `range``(x, n):`   `        ``# Start from the xth column` `        ``# and pr till the n-1th column` `        ``for` `j ``in` `range``(x, n):`   `            ``# Accessing the array using poers` `            ``print``(a[i][j], end ``=` `" "``)`   `        ``print``()` `    `  `# Print the matrix` `def` `prMatrix(a, n):`   `    ``for` `i ``in` `range``(n):` `        ``for` `j ``in` `range``(n):` `            ``print``(a[i][j], end ``=` `" "``)`   `        ``print``()` `    `  `# Driver Code` `if` `__name__ ``=``=` `'__main__'``: `   `    ``n ``=` `4`   `    ``# get the array inputs` `    ``a ``=` `[[``0` `for` `i ``in` `range``(n)] ` `            ``for` `i ``in` `range``(n)]` `    ``for` `i ``in` `range``(n):` `        ``for` `j ``in` `range``(n):` `            ``a[i][j] ``=` `(i ``*` `10` `+` `j)` `        `  `    ``# Print the matrix` `    ``print``(``"Original Matrix:"``)` `    ``prMatrix(a, n)`   `    ``x ``=` `2`   `    ``# passing the two dimensional` `    ``# array using a single poer` `    ``remove_X_Rows_and_Columns(a, n, x)`   `# This code is contributed by` `# Mohit kumar 29`

## PHP

 ``

Output:

```Original Matrix:
0 1 2 3
10 11 12 13
20 21 22 23
30 31 32 33

Removing First 2 rows and columns:
22 23
32 33

```

• Remove last X rows and columns from the matrix.

Examples:

```Input: n = 4,
arr[][] = {{20, 2, 10, 16},
{20, 17, 11, 6},
{14, 16, 1, 3},
{10, 2, 17, 4}},
x = 2
Output:
20 2
20 17

Explanation:
Here the value of X is 2.
So remove the last 2 rows and
the last 2 columns from the matrix.
Hence the output is
20 2
20 17

```

Simple Approach

• Skip the last x rows and columns and print the remaining elements in the matrix.
• Start from the 0th row and print till the n-xth row.
• Start from the 0th column and print till the n-xth column.

Implementation:

## CPP

 `#include ` `using` `namespace` `std;`   `// Function to remove last x rows` `// and columns from an array` `void` `remove_X_Rows_and_Columns(``int``* a, ``int` `n, ``int` `x)` `{`   `    ``cout << ``"\nRemoving Last "` `<< x` `         ``<< ``" rows and columns:\n"``;`   `    ``// Start from the 0th row` `    ``// and print till n-xth row` `    ``for` `(``int` `i = 0; i < n - x; i++) {`   `        ``// Start from the 0th column` `        ``// and print till the n-xth column` `        ``for` `(``int` `j = 0; j < n - x; j++) {`   `            ``// Accessing the array using pointers` `            ``cout << *((a + i * n) + j) << ``" "``;` `        ``}` `        ``cout << endl;` `    ``}` `}`   `// Print the matrix` `void` `printMatrix(``int``* a, ``int` `n)` `{`   `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``for` `(``int` `j = 0; j < n; j++) {` `            ``cout << *((a + i * n) + j) << ``" "``;` `        ``}` `        ``cout << endl;` `    ``}` `}`   `int` `main()` `{` `    ``int` `n = 4;`   `    ``// get the array inputs` `    ``int` `a[n][n];` `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``for` `(``int` `j = 0; j < n; j++) {` `            ``a[i][j] = (i * 10 + j);` `        ``}` `    ``}`   `    ``// Print the matrix` `    ``cout << ``"Original Matrix:\n"``;` `    ``printMatrix((``int``*)a, n);`   `    ``int` `x = 2;`   `    ``// passing the two dimensional` `    ``// array using a single pointer` `    ``remove_X_Rows_and_Columns((``int``*)a, n, x);`   `    ``return` `0;` `}`

Output:

```Original Matrix:
0 1 2 3
10 11 12 13
20 21 22 23
30 31 32 33

Removing Last 2 rows and columns:
0 1
10 11

```

• Remove first X rows and last X columns from the matrix.

Examples:

```Input: n = 4,
arr[][] = {{20, 2, 10, 16},
{20, 17, 11, 6},
{14, 16, 1, 3},
{10, 2, 17, 4}},
x = 2
Output:
14 16
10 2

Explanation:
Here the value of X is 2.
So remove the first 2 rows
and the last 2 columns from the matrix.
Hence the output is
14 16
10 2

```

Simple Approach

• Skip the first x rows and last x columns and print the remaining elements in the matrix.
• Start from the xth row and print till the n-1th row.
• Start from the 0th column and print till the n-xth column.

Implementation:

## CPP

 `#include ` `using` `namespace` `std;`   `// Function to remove first x rows` `// and last x columns from an array` `void` `remove_X_Rows_and_Columns(``int``* a, ``int` `n, ``int` `x)` `{`   `    ``cout << ``"\nRemoving First "` `<< x` `         ``<< ``" rows and Last "` `<< x` `         ``<< ``" columns:\n"``;`   `    ``// Start from the xth row` `    ``// and print till n-1th row` `    ``for` `(``int` `i = x; i < n; i++) {`   `        ``// Start from the 0th column` `        ``// and print till the n-xth column` `        ``for` `(``int` `j = 0; j < n - x; j++) {`   `            ``// Accessing the array using pointers` `            ``cout << *((a + i * n) + j) << ``" "``;` `        ``}` `        ``cout << endl;` `    ``}` `}`   `// Print the matrix` `void` `printMatrix(``int``* a, ``int` `n)` `{`   `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``for` `(``int` `j = 0; j < n; j++) {` `            ``cout << *((a + i * n) + j) << ``" "``;` `        ``}` `        ``cout << endl;` `    ``}` `}`   `int` `main()` `{` `    ``int` `n = 4;`   `    ``// get the array inputs` `    ``int` `a[n][n];` `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``for` `(``int` `j = 0; j < n; j++) {` `            ``a[i][j] = (i * 10 + j);` `        ``}` `    ``}`   `    ``// Print the matrix` `    ``cout << ``"Original Matrix:\n"``;` `    ``printMatrix((``int``*)a, n);`   `    ``int` `x = 2;`   `    ``// passing the two dimensional` `    ``// array using a single pointer` `    ``remove_X_Rows_and_Columns((``int``*)a, n, x);`   `    ``return` `0;` `}`

Output:

```Original Matrix:
0 1 2 3
10 11 12 13
20 21 22 23
30 31 32 33

Removing First 2 rows and Last 2 columns:
20 21
30 31

```

• Remove last X rows and first x columns from the matrix.

Examples:

```Input: n = 4,
arr[][] = {{20, 2, 10, 16},
{20, 17, 11, 6},
{14, 16, 1, 3},
{10, 2, 17, 4}},
x = 2
Output:
10 16
11 6

Explanation:
Here the value of X is 2.
So remove the last 2 rows and
the first 2 columns from the matrix.
Hence the output is
10 16
11 6

```

Simple Approach

• Skip the last x rows and first x columns and print the remaining elements in the matrix.
• Start from the 0th row and print till the n-xth row.
• Start from the xth column and print till the n-1th column.

Implementation:

## C++

 `#include ` `using` `namespace` `std;`   `// Function to remove last x rows` `// and first x columns from an array` `void` `remove_X_Rows_and_Columns(``int``* a, ``int` `n, ``int` `x)` `{`   `    ``cout << ``"\nRemoving Last "` `<< x` `         ``<< ``" rows and First "` `<< x` `         ``<< ``" columns:\n"``;`   `    ``// Start from the 0th row` `    ``// and print till n-xth row` `    ``for` `(``int` `i = 0; i < n - x; i++) {`   `        ``// Start from the xth column and` `        ``// print till the n-1th column` `        ``for` `(``int` `j = x; j < n; j++) {`   `            ``// Accessing the array using pointers` `            ``cout << *((a + i * n) + j) << ``" "``;` `        ``}` `        ``cout << endl;` `    ``}` `}`   `// Print the matrix` `void` `printMatrix(``int``* a, ``int` `n)` `{`   `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``for` `(``int` `j = 0; j < n; j++) {` `            ``cout << *((a + i * n) + j) << ``" "``;` `        ``}` `        ``cout << endl;` `    ``}` `}`   `int` `main()` `{` `    ``int` `n = 4;`   `    ``// get the array inputs` `    ``int` `a[n][n];` `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``for` `(``int` `j = 0; j < n; j++) {` `            ``a[i][j] = (i * 10 + j);` `        ``}` `    ``}`   `    ``// Print the matrix` `    ``cout << ``"Original Matrix:\n"``;` `    ``printMatrix((``int``*)a, n);`   `    ``int` `x = 2;`   `    ``// passing the two dimensional` `    ``// array using a single pointer` `    ``remove_X_Rows_and_Columns((``int``*)a, n, x);`   `    ``return` `0;` `}`

## Python3

 `# Function to remove last x rows` `# and first x columns from an array` `def` `remove_X_Rows_and_Columns(a, n, x):`   `    ``print``(``"\nRemoving Last "``, x ,` `          ``" rows and First "``, x, ` `          ``" columns:"``)`   `    ``# Start from the 0th row` `    ``# and print till n-xth row` `    ``for` `i ``in` `range``(n ``-` `x):`   `        ``# Start from the xth column and` `        ``# print till the n-1th column` `        ``for` `j ``in` `range``(x, n):`   `            ``# Accessing the array using pointers` `            ``print``(a[i][j], end ``=` `" "``)` `            `  `        ``print``()`   `# Print the matrix` `def` `printMatrix(a, n):`   `    ``for` `i ``in` `range``(n):` `        ``for` `j ``in` `range``(n):` `            ``print``(a[i][j], end ``=` `" "``)` `            `  `        ``print``()`   `# Driver code` `if` `__name__ ``=``=` `'__main__'``:` `    `  `    ``n ``=` `4`   `    ``# Get the array inputs` `    ``a ``=` `[[``0` `for` `i ``in` `range``(n)] ` `            ``for` `i ``in` `range``(n)]` `            `  `    ``for` `i ``in` `range``(n):` `        ``for` `j ``in` `range``(n):` `            ``a[i][j] ``=` `(i ``*` `10` `+` `j)`   `    ``# Print the matrix` `    ``print``(``"Original Matrix:"``)` `    ``printMatrix(a, n)`   `    ``x ``=` `2`   `    ``# Passing the two dimensional` `    ``# array using a single pointer` `    ``remove_X_Rows_and_Columns(a, n, x)`   `# This code is contributed by mohit kumar 29`

Output:

```Original Matrix:
0 1 2 3
10 11 12 13
20 21 22 23
30 31 32 33

Removing Last 2 rows and First 2 columns:
2 3
12 13

```

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.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.

Improved By : AnkitRai01, mohit kumar 29

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.