Suma del conteo del número de cuadrados adyacentes en una cuadrícula MXN

Dada una array M × N. La tarea es contar el número de celdas adyacentes y calcular su suma. 
Se dice que dos celdas están conectadas si están adyacentes entre sí horizontal, vertical o diagonalmente.
Ejemplos: 
 

Entrada: m = 2, n = 2 
Salida: 12
Entrada: m = 3, n = 2 
Salida: 22
Vea el siguiente diagrama donde los números escritos indican el número de cuadrados adyacentes. 
 

 

Enfoque:
En la cuadrícula am X n puede haber 3 casos: 
 

  • Las celdas de esquina tocan 3 celdas, y siempre hay 4 celdas de esquina.
  • Las celdas de borde tocan 5 celdas, y siempre hay 2 * (m+n-4) celdas de borde.
  • Las celdas interiores tocan 8 celdas, y siempre hay (m-2) * (n-2) celdas interiores.

Por lo tanto, 
 

Sum = 3*4 + 5*2*(m+n-4) + 8*(m-2)*(n-2) 
    = 8mn - 6m - 6n +4

A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// function to calculate the sum of all cells adjacent value
int sum(int m, int n)
{
    return 8 * m * n - 6 * m - 6 * n + 4;
}
 
// Driver program to test above
int main()
{
    int m = 3, n = 2;
    cout << sum(m, n);
 
    return 0;
}

Java

// Java implementation of the above approach
class GFG
{
     
    // function to calculate the sum
    // of all cells adjacent value
    static int sum(int m, int n)
    {
        return 8 * m * n - 6 * m - 6 * n + 4;
    }
     
    // Driver Code
    public static void main (String[] args)
    {
        int m = 3, n = 2;
        System.out.println(sum(m, n));
    }
}
 
// This Code is contributed by AnkitRai01

Python3

# Python3 implementation of the above approach
 
# function to calculate the sum
# of all cells adjacent value
def summ(m, n):
    return 8 * m * n - 6 * m - 6 * n + 4
 
# Driver Code
m = 3
n = 2
print(summ(m, n))
 
# This code is contributed by Mohit Kumar

C#

// C# implementation of the above approach
using System;
class GFG
{
     
    // function to calculate the sum
    // of all cells adjacent value
    static int sum(int m, int n)
    {
        return 8 * m * n - 6 * m - 6 * n + 4;
    }
     
    // Driver Code
    public static void Main (String []args)
    {
        int m = 3, n = 2;
        Console.WriteLine(sum(m, n));
    }
}
 
// This code is contributed by andrew1234

Javascript

<script>
 
// Javascript implementation of the above approach
 
// function to calculate the sum of all cells adjacent value
function sum(m, n)
{
    return 8 * m * n - 6 * m - 6 * n + 4;
}
 
// Driver program to test above
var m = 3, n = 2;
document.write(sum(m, n));
 
</script>
Producción: 

22

 

Complejidad del tiempo: O(1)

Espacio Auxiliar: O(1)
 

Publicación traducida automáticamente

Artículo escrito por spp____ 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 *