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:
Espacio Auxiliar: O(1)