Elementos de contorno de una array

Impresión de elementos de contorno de una array.

Dada una array de tamaño nx m. Imprime los elementos de contorno de la array. Los elementos de contorno son aquellos elementos que no están rodeados por elementos en las cuatro direcciones, es decir, elementos en la primera fila, primera columna, última fila y última columna. 

Ejemplos: 

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.

Enfoque: La idea es simple. Atraviese la array y verifique para cada elemento si ese elemento se encuentra en el límite o no, en caso afirmativo, imprima el elemento; de lo contrario, imprima el carácter de espacio. 

  • Algoritmo: 
    1. Atraviesa la array de principio a fin.
    2. Asigne el bucle exterior para señalar la fila y la fila interior para atravesar los elementos de la fila.
    3. Si el elemento se encuentra en el límite de la array, imprima el elemento, es decir, si el elemento se encuentra en la primera fila, la primera columna, la última fila, la última columna
    4. Si el elemento no es un elemento de límite, imprima un espacio en blanco.
  • Implementación:

C++

// 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 code
int 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

// JAVA Code for Boundary elements of a Matrix
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)
                    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

# 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 code
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 Sachin Bisht

C#

// C# Code for Boundary
// elements of a Matrix
using 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
// 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
?>

Javascript

<script>
   
// JavaScript Code for Boundary
// elements of a Matrix
function 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 Code
var a = [ [ 1, 2, 3, 4 ],
              [ 5, 6, 7, 8 ],
              [ 1, 2, 3, 4 ],
              [ 5, 6, 7, 8 ]];
printBoundary(a, 4, 4);
 
 
</script>

Producción: 

1 2 3 4 
5     8 
1     4 
5 6 7 8
  • Análisis de Complejidad: 
    • Complejidad de tiempo: O(n*n), donde n es el tamaño de la array. 
      Esto se logra mediante un solo recorrido de la array.
    • Complejidad espacial: O(1). 
      Ya que se necesita un espacio constante.

Hallar la suma de los elementos de contorno

Dada una array de tamaño nx m. Encuentre la suma de los elementos de contorno de la array. Los elementos de contorno son aquellos elementos que no están rodeados por elementos en las cuatro direcciones, es decir, elementos en la primera fila, la primera columna, la última fila y la última columna. 

Ejemplos:  

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

Enfoque: La idea es simple. Atraviese la array y verifique para cada elemento si ese elemento se encuentra en el límite o no, si es así, agréguelos para obtener la suma de todos los elementos del límite. 

  • Algoritmo: 
    1. Cree una variable para almacenar la suma y recorrer la array de principio a fin.
    2. Asigne el bucle exterior para señalar la fila y la fila interior para atravesar los elementos de la fila.
    3. Si el elemento se encuentra en el límite de la array, agregue el elemento a la suma, es decir, si el elemento se encuentra en la primera fila, la primera columna, la última fila, la última columna
    4. imprimir la suma.
  • Implementación:

C++

// 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 code
int 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

// JAVA Code for Finding sum of boundary elements
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 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

# 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 code
a = [ [ 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#

// C# Code for Finding sum
// of boundary elements
using 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
// 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
?>

Javascript

<script>
 
// Javascript code for finding sum
// of boundary elements
function 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 code
let 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>

Producción: 

Sum of boundary elements is 54
  • Análisis de Complejidad: 
    • Complejidad de tiempo: O(n*n), donde n es el tamaño de la array. 
      Esto se logra mediante un solo recorrido de la array.
    • Complejidad espacial: O(1). 
      Ya que se necesita un espacio constante.

Este artículo es una contribución de Sarthak Kohli . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *