Boundary elements of a Matrix - GeeksforGeeks

28 Apr, 2022
Printing Boundary Elements of a Matrix.
Given a matrix of size n x m. Print the boundary elements of the matrix. Boundary elements are those elements which are not surrounded by elements on all four directions, i.e. elements in first row, first column, last row and last column. 
Examples: 
Input :
        1 2 3 4  
        5 6 7 8
        1 2 3 4
        5 6 7 8
Output : 
         1 2 3 4 
         5     8 
         1     4 
         5 6 7 8
Explanation:The boundary elements of the
matrix is printed.

Input:
        1 2 3   
        5 6 7 
        1 2 3 
Output: 
        1 2 3   
        5   7 
        1 2 3 
Explanation:The boundary elements of the 
matrix is printed.
Approach: The idea is simple. Traverse the matrix and check for every element if that element lies on the boundary or not, if yes then print the element else print space character. 
Algorithm : Traverse the array from start to end.Assign the outer loop to point the row and the inner row to traverse the elements of row.If the element lies in the boundary of matrix, then print the element, i.e. if the element lies in 1st row, 1st column, last row, last columnIf the element is not boundary element print a blank space.
Traverse the array from start to end.Assign the outer loop to point the row and the inner row to traverse the elements of row.If the element lies in the boundary of matrix, then print the element, i.e. if the element lies in 1st row, 1st column, last row, last columnIf the element is not boundary element print a blank space.
Traverse the array from start to end.
Assign the outer loop to point the row and the inner row to traverse the elements of row.
If the element lies in the boundary of matrix, then print the element, i.e. if the element lies in 1st row, 1st column, last row, last column
If the element is not boundary element print a blank space.
Implementation:
C++
Java
Python
C#
PHP
Javascript
// C++ program to print boundary element of// matrix.#include <bits/stdc++.h>using namespace std; const int MAX = 100; void printBoundary(int a[][MAX], int m, int n){    for (int i = 0; i < m; i++) {        for (int j = 0; j < n; j++) {            if (i == 0 || j == 0 || i == n - 1 || j == n - 1)                cout << a[i][j] << " ";            else                cout << " "                     << " ";        }        cout << "\n";    }} // Driver codeint main(){    int a[4][MAX] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } };    printBoundary(a, 4, 4);    return 0;}
// JAVA Code for Boundary elements of a Matrixclass GFG {     public static void printBoundary(int a[][], int m,                                     int n)    {        for (int i = 0; i < m; i++) {            for (int j = 0; j < n; j++) {                if (i == 0)                    System.out.print(a[i][j] + " ");                else if (i == m - 1)                    System.out.print(a[i][j] + " ");                else if (j == 0)                    System.out.print(a[i][j] + " ");                else if (j == n - 1)                    System.out.print(a[i][j] + " ");                else                    System.out.print("  ");            }            System.out.println("");        }    }     /* Driver program to test above function */    public static void main(String[] args)    {        int a[][] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } };         printBoundary(a, 4, 4);    }}// This code is contributed by Arnav Kr. Mandal.
# Python program to print boundary element# of the matrix. MAX = 100  def printBoundary(a, m, n):    for i in range(m):        for j in range(n):            if (i == 0):                print a[i][j],            elif (i == m-1):                print a[i][j],            elif (j == 0):                print a[i][j],            elif (j == n-1):                print a[i][j],            else:                print " ",        print         # Driver codea = [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ],    [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ]printBoundary(a, 4, 4) # This code is contributed by Sachin Bisht
// C# Code for Boundary// elements of a Matrixusing System; class GFG {     public static void printBoundary(int[, ] a,                                     int m,                                     int n)    {        for (int i = 0; i < m; i++) {            for (int j = 0; j < n; j++) {                if (i == 0)                    Console.Write(a[i, j] + " ");                else if (i == m - 1)                    Console.Write(a[i, j] + " ");                else if (j == 0)                    Console.Write(a[i, j] + " ");                else if (j == n - 1)                    Console.Write(a[i, j] + " ");                else                    Console.Write("  ");            }            Console.WriteLine(" ");        }    }     // Driver Code    static public void Main()    {        int[, ] a = { { 1, 2, 3, 4 },                      { 5, 6, 7, 8 },                      { 1, 2, 3, 4 },                      { 5, 6, 7, 8 } };         printBoundary(a, 4, 4);    }} // This code is contributed by ajit
<?php// PHP program to print// boundary element of// matrix.$MAX = 100; function printBoundary($a, $m, $n){    global $MAX;    for ($i = 0; $i < $m; $i++)    {        for ($j = 0; $j < $n; $j++)        {            if ($i == 0)                echo $a[$i][$j], " ";            else if ($i == $m - 1)                echo $a[$i][$j], " ";            else if ($j == 0)                echo $a[$i][$j], " ";            else if ($j == $n - 1)                echo $a[$i][$j], " ";            else                echo " ", " ";        }        echo "\n";    }} // Driver code$a = array(array( 1, 2, 3, 4 ),           array( 5, 6, 7, 8 ),           array( 1, 2, 3, 4 ),           array( 5, 6, 7, 8 ));printBoundary($a, 4, 4);     // This code is contributed// by akt_mit?>
<script>   // JavaScript Code for Boundary// elements of a Matrixfunction printBoundary(a, m, n){    for (var i = 0; i < m; i++) {        for (var j = 0; j < n; j++) {            if (i == 0)                document.write(a[i][j] + '\xa0');            else if (i == m - 1)                document.write(a[i][j] + '\xa0');            else if (j == 0)                document.write(a[i][j] + '\xa0');            else if (j == n - 1)                document.write(a[i][j] + '\xa0');            else                document.write("\xa0\xa0\xa0");        }        document.write("\xa0<br>");    }}// Driver Codevar a = [ [ 1, 2, 3, 4 ],              [ 5, 6, 7, 8 ],              [ 1, 2, 3, 4 ],              [ 5, 6, 7, 8 ]];printBoundary(a, 4, 4);  </script>
Output: 
1 2 3 4 
5     8 
1     4 
5 6 7 8
Complexity Analysis: Time Complexity: O(n*n), where n is the size of array. This is achieved by single traversal of the matrix.Space Complexity: O(1). Since a constant space is needed.
Time Complexity: O(n*n), where n is the size of array. This is achieved by single traversal of the matrix.
Space Complexity: O(1). Since a constant space is needed.
Finding sum of boundary elements
Given an matrix of size n x m. Find the sum of boundary elements of the matrix. Boundary elements are those elements which is not surrounded by elements on all four directions, i.e. elements in first row, first column, last row and last column. 
Examples:  
Input :
        1 2 3 4  
        5 6 7 8
        1 2 3 4
        5 6 7 8
Output : 54
Explanation:The boundary elements of the matrix 
         1 2 3 4 
         5     8 
         1     4 
         5 6 7 8
Sum = 1+2+3+4+5+8+1+4+5+6+7+8 =54

Input :
        1 2 3   
        5 6 7 
        1 2 3 
Output : 24
Explanation:The boundary elements of the matrix
        1 2 3   
        5   7 
        1 2 3  
Sum = 1+2+3+5+7+1+2+3 = 24
Approach: The idea is simple. Traverse the matrix and check for every element if that element lies on the boundary or not, if yes then add them to get the sum of all the boundary elements. 
Algorithm : Create a variable to store the sum and Traverse the array from start to end.Assign the outer loop to point the row and the inner row to traverse the elements of row.If the element lies in the boundary of matrix then add the element to the sum, i.e. if the element lies in 1st row, 1st column, last row, last columnprint the sum.
Create a variable to store the sum and Traverse the array from start to end.Assign the outer loop to point the row and the inner row to traverse the elements of row.If the element lies in the boundary of matrix then add the element to the sum, i.e. if the element lies in 1st row, 1st column, last row, last columnprint the sum.
Create a variable to store the sum and Traverse the array from start to end.
Assign the outer loop to point the row and the inner row to traverse the elements of row.
If the element lies in the boundary of matrix then add the element to the sum, i.e. if the element lies in 1st row, 1st column, last row, last column
print the sum.
Implementation:
C++
Java
Python
C#
PHP
Javascript
// C++ program to find sum of boundary elements// of matrix.#include <bits/stdc++.h>using namespace std; const int MAX = 100; int getBoundarySum(int a[][MAX], int m, int n){    long long int sum = 0;    for (int i = 0; i < m; i++) {        for (int j = 0; j < n; j++) {            if (i == 0)                sum += a[i][j];            else if (i == m - 1)                sum += a[i][j];            else if (j == 0)                sum += a[i][j];            else if (j == n - 1)                sum += a[i][j];        }    }    return sum;} // Driver codeint main(){    int a[][MAX] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } };    long long int sum = getBoundarySum(a, 4, 4);    cout << "Sum of boundary elements is " << sum;    return 0;}
// JAVA Code for Finding sum of boundary elementsclass GFG {     public static long getBoundarySum(int a[][], int m,                                      int n)    {        long sum = 0;        for (int i = 0; i < m; i++) {            for (int j = 0; j < n; j++) {                if (i == 0)                    sum += a[i][j];                else if (i == m - 1)                    sum += a[i][j];                else if (j == 0)                    sum += a[i][j];                else if (j == n - 1)                    sum += a[i][j];            }        }        return sum;    }     /* Driver program to test above function */    public static void main(String[] args)    {        int a[][] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } };        long sum = getBoundarySum(a, 4, 4);        System.out.println("Sum of boundary elements"                           + " is " + sum);    }}// This code is contributed by Arnav Kr. Mandal.
# Python program to print boundary element# of the matrix. MAX = 100  def printBoundary(a, m, n):    sum = 0    for i in range(m):        for j in range(n):            if (i == 0):                sum += a[i][j]            elif (i == m-1):                sum += a[i][j]            elif (j == 0):                sum += a[i][j]            elif (j == n-1):                sum += a[i][j]    return sum     # Driver codea = [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ],    [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ]sum = printBoundary(a, 4, 4)print "Sum of boundary elements is", sum # This code is contributed by Sachin Bisht
// C# Code for Finding sum// of boundary elementsusing System; class GFG {    public static long getBoundarySum(int[, ] a,                                      int m, int n)    {        long sum = 0;        for (int i = 0; i < m; i++) {            for (int j = 0; j < n; j++) {                if (i == 0)                    sum += a[i, j];                else if (i == m - 1)                    sum += a[i, j];                else if (j == 0)                    sum += a[i, j];                else if (j == n - 1)                    sum += a[i, j];            }        }        return sum;    }     // Driver Code    static public void Main()    {        int[, ] a = { { 1, 2, 3, 4 },                      { 5, 6, 7, 8 },                      { 1, 2, 3, 4 },                      { 5, 6, 7, 8 } };        long sum = getBoundarySum(a, 4, 4);        Console.WriteLine("Sum of boundary"                          + " elements is " + sum);    }} // This code is contributed by ajit
<?php// PHP program to find// sum of boundary// elements of matrix. function getBoundarySum($a,                        $m, $n){    $sum = 0;    for ($i = 0; $i < $m; $i++)    {        for ( $j = 0; $j < $n; $j++)        {            if ($i == 0)                $sum += $a[$i][$j];            else if ($i == $m - 1)                $sum += $a[$i][$j];            else if ($j == 0)                $sum += $a[$i][$j];            else if ($j == $n - 1)                $sum += $a[$i][$j];        }    }    return $sum;} // Driver code$a = array(array(1, 2, 3, 4),           array(5, 6, 7, 8),           array(1, 2, 3, 4),           array(5, 6, 7, 8));            $sum = getBoundarySum($a, 4, 4);echo "Sum of boundary elements is ", $sum; // This code is contributed by ajit?>
<script> // Javascript code for finding sum// of boundary elementsfunction getBoundarySum(a, m, n){    let sum = 0;    for(let i = 0; i < m; i++)    {        for(let j = 0; j < n; j++)        {            if (i == 0)                sum += a[i][j];            else if (i == m - 1)                sum += a[i][j];            else if (j == 0)                sum += a[i][j];            else if (j == n - 1)                sum += a[i][j];        }    }    return sum;} // Driver codelet a = [ [ 1, 2, 3, 4 ],          [ 5, 6, 7, 8 ],          [ 1, 2, 3, 4 ],          [ 5, 6, 7, 8 ] ];let sum = getBoundarySum(a, 4, 4); document.write("Sum of boundary elements" +               " is " + sum);                // This code is contributed by rameshtravel07  </script>
Output: 
Sum of boundary elements is 54
Complexity Analysis: Time Complexity: O(n*n), where n is the size of the array. This is achieved by single traversal of the matrix.Space Complexity: O(1). Since a constant space is needed.
Time Complexity: O(n*n), where n is the size of the array. This is achieved by single traversal of the matrix.
Space Complexity: O(1). Since a constant space is needed.
This article is contributed by Sarthak Kohli. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
jit_t
andrew1234
Akanksha_Rai
rameshtravel07
noob2000
surinderdawra388
Matrix
School Programming
Matrix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Divide and Conquer | Set 5 (Strassen's Matrix Multiplication)
Efficiently compute sums of diagonals of a matrix
Program to multiply two matrices
Count all possible paths from top left to bottom right of a mXn matrix
Printing all solutions in N-Queen Problem
Python Dictionary
Arrays in C/C++
Inheritance in C++
Reverse a string in Java
C++ Classes and Objects