Skip to content
Related Articles

Related Articles

Remove any corner X rows and columns from a matrix
  • Last Updated : 08 Feb, 2021

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++




// C++ implementation of the above approach
#include <iostream>
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;
}

Java




// Java implementation of the above approach
class GFG{
     
// Function to remove first x
// rows and columns from an array
static void remove_X_Rows_and_Columns(int a[][],
                                      int n, int x)
{
    System.out.print("\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
            System.out.print(a[i][j] + " ");
        }
        System.out.println();
    }
}
 
// Print the matrix
static void printMatrix(int a[][], int n)
{
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            System.out.print(a[ i][j] + " ");
        }
        System.out.println();
    }
}
 
// Driver Code
public static void main(String [] args)
{
    int n = 4;
 
    // Get the array inputs
    int a[][] = new int[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
    System.out.println( "Original Matrix:");
    printMatrix(a, n);
 
    int x = 2;
 
    // Passing the two dimensional
    // array using a single pointer
    remove_X_Rows_and_Columns(a, n, x);
}
}
 
// This code is contributed by chitranayal

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

C#




// C# implementation of the above approach
using System;
 
class GFG{
     
// Function to remove first x
// rows and columns from an array
static void remove_X_Rows_and_Columns(int[,] a, 
                                      int n, int x)
{
    Console.WriteLine("\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
            Console.Write(a[i, j] + " ");
             
        }
        Console.WriteLine();
    }
}
 
// Print the matrix
static void printMatrix(int[,] a, int n)
{
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            Console.Write(a[i, j] + " ");
        }
        Console.WriteLine();
    }
}
 
// Driver Code
static public void Main()
{
    int n = 4;
     
    // Get the array inputs
    int[,] a = new int[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
    Console.WriteLine( "Original Matrix:");
    printMatrix(a, n);
    int x = 2;
     
    // Passing the two dimensional
    // array using a single pointer
    remove_X_Rows_and_Columns(a, n, x);
}
}
 
// This code is contributed by avanitrachhadiya2155

PHP




<?php
// PHP implementation of the above approach
 
// Function to remove first x
// rows and columns from an array
function remove_X_Rows_and_Columns($a, $n, $x)
{
    echo "\nRemoving First ", $x,
         " rows and columns:\n";
 
    // Start from the xth row
    // and print till n-1th row
    for ($i = $x; $i < $n; $i++)
    {
 
        // Start from the xth column
        // and print till the n-1th column
        for ($j = $x; $j < $n; $j++)
        {
 
            // Accessing the array using pointers
            echo $a[$i][$j], " ";
        }
        echo "\n";
    }
}
 
// Print the matrix
function printMatrix($a, $n)
{
 
    for ($i = 0; $i < $n; $i++)
    {
        for ($j = 0; $j < $n; $j++)
        {
            echo $a[$i][$j], " ";
        }
        echo "\n";
    }
}
 
$n = 4;
 
// get the array inputs
$a = array(array());
 
for ($i = 0; $i < $n; $i++)
{
    for ($j = 0; $j < $n; $j++)
    {
        $a[$i][$j] = $i * 10 + $j;
    }
}
 
// Print the matrix
echo "Original Matrix:\n";
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 Ryuga
?>
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: 

C++




#include <iostream>
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;
}

Python3




# Function to remove last x rows
# and columns from an array
def remove_X_Rows_and_Columns(a, n, x):
    print("\nRemoving Last", x, "rows and columns:")
     
    # Start from the 0th row
    # and print till n-xth row
    for i in range(n - x):
       
        # Start from the 0th column
        # and print till the n-xth column
        for j in range(n - x):
           
            # 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()
 
n = 4
 
# get the array inputs
a = [[0 for i in range(n)] for j 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 rag2127
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: 

C++




#include <iostream>
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 <iostream>
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

 

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.
My Personal Notes arrow_drop_up
Recommended Articles
Page :