La distancia más lejana de un 0 desde el centro de una array 2-D

Dada una array de orden impar mat , la tarea es encontrar la distancia más lejana de un 0 desde el centro de la array. La distancia entre dos elementos en las ubicaciones (i1, j1) e (i2, j2) de la array se calcula como |i1- i2| + |j1-j2|. Si no aparece 0 en la array, imprima 0 como resultado.
Ejemplos: 
 

Entrada: mat[][] = {{2, 3, 0}, {0, 2, 0}, {0, 1, 1}} 
Salida: 2
Entrada: mat[][] = {{2, 3, 4, {0, 2, 0}, {6, 1, 1}} 
Salida:
 

Enfoque: el centro de cualquier array con orden impar está en el índice i = j = piso (n/2) . Ahora, para encontrar la distancia más lejana de cualquier 0 desde el centro, calcule la distancia de cada 0 desde el centro de la array como |in/2| + |jn/2| y actualice la distancia máxima como resultado. Imprima el resultado al final o, si la array no contiene ningún 0 , imprima 0 .
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ program to find the farthest distance
// of a 0 from the center of the matrix
#include <bits/stdc++.h>
#define n 3
using namespace std;
 
// function to return farthest distance
// of zero from center of the matrix
int farthestDistance(int matrix[][n])
{
 
    int result = 0;
 
    // traverse the matrix
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (matrix[i][j] == 0)
                result = max(result
                           , abs(i - n/2) + abs(j - n/2));
        }
    }
 
    // return result
    return result;
}
 
// driver program
int main()
{
    int matrix[n][n] = { { 1, 2, 3 }
                       , { 0, 1, 1 }
                       , { 0, 0, 0 } };
 
    cout << farthestDistance(matrix);
    return 0;
}

Java

//  Java program to find the farthest distance
// of a 0 from the center of the matrix
 
import java.io.*;
 
class GFG {
    
 
static int n = 3;
 
 
// function to return farthest distance
// of zero from center of the matrix
static int farthestDistance(int matrix[][])
{
 
    int result = 0;
 
    // traverse the matrix
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (matrix[i][j] == 0)
                result = Math.max(result
                        , Math.abs(i - n/2) + Math.abs(j - n/2));
        }
    }
 
    // return result
    return result;
}
 
// driver program
 
    public static void main (String[] args) {
            int matrix[][] = { { 1, 2, 3 }
                    , { 0, 1, 1 }
                    , { 0, 0, 0 } };
 
    System.out.print(farthestDistance(matrix));
    }
}
// This code is contributed by anuj_67..

Python3

# Python3 program to find the farthest distance
# of a 0 from the center of the matrix
 
n = 3
 
# function to return farthest distance
# of zero from center of the matrix
def farthestDistance(matrix):
    result = 0
 
    # traverse the matrix
    for i in range (0, n):
        for j in range (0, n):
            if (matrix[i][j] == 0):
                result = max(result, abs(i - n // 2) +
                                     abs(j - n//2))
         
    # return result
    return result
 
# Driver Code
matrix = [[1, 2, 3],
          [0, 1, 1],
          [0, 0, 0]]
 
print(farthestDistance(matrix))
 
# This code is contributed by
# Archana_kumari

C#

// C# program to find the farthest distance
// of a 0 from the center of the matrix
using System;
 
class GFG
{
     
static int n = 3;
 
// function to return farthest distance
// of zero from center of the matrix
static int farthestDistance(int [,]matrix)
{
 
    int result = 0;
 
    // traverse the matrix
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (matrix[i,j] == 0)
                result = Math.Max(result ,
                         Math.Abs(i - n / 2) +
                         Math.Abs(j - n / 2));
        }
    }
 
    // return result
    return result;
}
 
// Driver Code
static public void Main ()
{
    int [,]matrix = {{ 1, 2, 3 },
                     { 0, 1, 1 },
                     { 0, 0, 0 }};
 
    Console.WriteLine(farthestDistance(matrix));
}
}
 
// This code is contributed by Sachin

PHP

<?php
// PHP program to find the farthest distance
// of a 0 from the center of the matrix
$n = 3;
 
// function to return farthest distance
// of zero from center of the matrix
function farthestDistance($matrix)
{
    global $n;
    $result = 0;
     
    // traverse the matrix
    for ($i = 0; $i < $n; $i++)
    {
        for ($j = 0; $j < $n; $j++)
        {
            if (($matrix[$i][$j] == 0) > 0)
                $result = max($result,
                          abs($i - $n / 2) +
                          abs($j - $n / 2));
        }
    }
 
    // return result
    return $result;
}
 
// Driver Code
$matrix = array(array( 1, 2, 3 ),
                array( 0, 1, 1 ),
                array( 0, 0, 0 ));
 
echo farthestDistance($matrix);
     
// This code is contributed by Sach_code
?>

Javascript

<script>
 
// Javascript program to find the farthest distance
// of a 0 from the center of the matrix
var n = 3;
 
// function to return farthest distance
// of zero from center of the matrix
function farthestDistance(matrix)
{
 
    var result = 0;
 
    // traverse the matrix
    for (var i = 0; i < n; i++) {
        for (var j = 0; j < n; j++) {
            if (matrix[i][j] == 0)
                result = Math.max(result
                           , Math.abs(i - n/2) + Math.abs(j - n/2));
        }
    }
 
    // return result
    return result;
}
 
// driver program
var matrix = [ [ 1, 2, 3 ]
                   , [ 0, 1, 1 ]
                   , [ 0, 0, 0 ] ];
document.write( farthestDistance(matrix));
 
</script>
Producción: 

2

 

Complejidad de tiempo : O (N * M), ya que estamos usando bucles anidados para atravesar N * M veces.

Espacio auxiliar : O (1), ya que no estamos usando ningún espacio adicional para la array.
 

Publicación traducida automáticamente

Artículo escrito por Shivam.Pradhan 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 *