Dada una array cuadrada mat[][] de dimensiones impares, la tarea es cambiar el valor del elemento más central de la array a la suma de los elementos que lo rodean.
Ejemplos:
Input: mat[][] = { {2, 1, 7}, {3, 7, 2}, {5, 4, 9} } Output: 2 1 7 3 10 2 5 4 9 Input: mat[][] = {{1, 3, 5, 6, 7}, {3, 5, 3, 2, 1}, {1, 2, 3, 4, 5}, {7, 9, 2, 1, 6}, {9, 1, 5, 3, 2} } Output: 1 3 5 6 7 3 5 3 2 1 1 2 11 4 5 7 9 2 1 6 9 1 5 3 2
Aproximación: El elemento medio de la array de orden impar estará ubicado en la posición mat[n/2][n/2] .
Por lo tanto, actualice directamente el elemento como:
mat[n / 2][n / 2] = mat[n / 2 - 1][n / 2] + mat[n / 2][n / 2 - 1] + mat[n / 2 + 1][n / 2] + mat[n / 2][n / 2 + 1]
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to replace the value of the middle element // of the matrix with the sum of surrounding elements #include <iostream> using namespace std; const int MAX = 100; // Function to print the matrix void print(int mat[][MAX], int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << mat[i][j] << " "; } cout << endl; } } // Function to change the value of the middle element // of the matrix to the sum of surrounding elements void changemiddle(int mat[][MAX], int n) { // Change the middle element mat[n / 2][n / 2] = mat[n / 2 - 1][n / 2] + mat[n / 2][n / 2 - 1] + mat[n / 2 + 1][n / 2] + mat[n / 2][n / 2 + 1]; // Function call to print the matrix print(mat, n); } // Driver code int main() { int mat[][MAX] = { { 2, 1, 7 }, { 3, 7, 2 }, { 5, 4, 9 } }; changemiddle(mat, 3); return 0; }
C
// C program to replace the value of the middle element // of the matrix with the sum of surrounding elements #include <stdio.h> #define MAX 100 // Function to print the matrix void print(int mat[][MAX], int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%d ",mat[i][j]); } printf("\n"); } } // Function to change the value of the middle element // of the matrix to the sum of surrounding elements void changemiddle(int mat[][MAX], int n) { // Change the middle element mat[n / 2][n / 2] = mat[n / 2 - 1][n / 2] + mat[n / 2][n / 2 - 1] + mat[n / 2 + 1][n / 2] + mat[n / 2][n / 2 + 1]; // Function call to print the matrix print(mat, n); } // Driver code int main() { int mat[][MAX] = { { 2, 1, 7 }, { 3, 7, 2 }, { 5, 4, 9 } }; changemiddle(mat, 3); return 0; } // This code is contributed by kothavvsaakash.
Java
// Java program to replace the value of the middle element // of the matrix with the sum of surrounding elements\ public class GFG{ // Function to print the matrix static void print(int mat[][], int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print(mat[i][j] + " "); } System.out.println(); } } // Function to change the value of the middle element // of the matrix to the sum of surrounding elements static void changemiddle(int mat[][], int n) { // Change the middle element mat[n / 2][n / 2] = mat[n / 2 - 1][n / 2] + mat[n / 2][n / 2 - 1] + mat[n / 2 + 1][n / 2] + mat[n / 2][n / 2 + 1]; // Function call to print the matrix print(mat, n); } // Driver code public static void main(String []args) { int mat[][] = { { 2, 1, 7 }, { 3, 7, 2 }, { 5, 4, 9 } }; changemiddle(mat, 3); } // This code is contributed by Ryuga }
Python3
# Python3 program to replace the value # of the middle element of the matrix # with the sum of surrounding elements MAX = 100 # Function to print the matrix def printMatrix(mat, n): for i in range(n): for j in range(n): print(mat[i][j], end = " ") print() # Function to change the value of # the middle element of the matrix # to the sum of surrounding elements def changemiddle(mat, n): # Change the middle element mat[n // 2][n // 2] = (mat[n // 2 - 1][n // 2] + mat[n // 2][n // 2 - 1] + mat[n // 2 + 1][n // 2] + mat[n // 2][n // 2 + 1]) # Function call to print the matrix printMatrix(mat, n) # Driver Code if __name__ == "__main__": mat = [ [ 2, 1, 7 ], [ 3, 7, 2 ], [ 5, 4, 9 ]] changemiddle(mat, 3) # This code is contributed # by rituraj_jain
C#
// C# program to replace the value of the middle element // of the matrix with the sum of surrounding elements using System; public class GFG{ // Function to print the matrix static void print(int[,] mat, int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { Console.Write(mat[i,j] + " "); } Console.Write("\n"); } } // Function to change the value of the middle element // of the matrix to the sum of surrounding elements static void changemiddle(int[,] mat, int n) { // Change the middle element mat[n / 2,n / 2] = mat[n / 2 - 1,n / 2] + mat[n / 2,n / 2 - 1] + mat[n / 2 + 1,n / 2] + mat[n / 2,n / 2 + 1]; // Function call to print the matrix print(mat, n); } // Driver code public static void Main() { int[,] mat = { { 2, 1, 7 }, { 3, 7, 2 }, { 5, 4, 9 } }; changemiddle(mat, 3); } }
PHP
<?php // PHP program to replace the value of // the middle element of the matrix // with the sum of surrounding elements // Function to print the matrix function printmat(&$mat, $n) { for ($i = 0; $i < $n; $i++) { for ($j = 0; $j < $n; $j++) { echo ($mat[$i][$j]); echo (" "); } echo ("\n"); } } // Function to change the value of the // middle element of the matrix to the // sum of surrounding elements function changemiddle(&$mat, $n) { // Change the middle element $mat[$n / 2][$n / 2] = $mat[$n / 2 - 1][$n / 2] + $mat[$n / 2][$n / 2 - 1] + $mat[$n / 2 + 1][$n / 2] + $mat[$n / 2][$n / 2 + 1]; // Function call to print the matrix printmat($mat, $n); } // Driver code $mat = array(array(2, 1, 7), array(3, 7, 2), array(5, 4, 9)); changemiddle($mat, 3); // This code is contributed // by Shivi_Aggarwal ?>
Javascript
<script> // JavaScript program to replace the // value of the middle element // of the matrix with the sum of // surrounding elements // Function to print the matrix function print(mat,n) { for (let i = 0; i < n; i++) { for (let j = 0; j < n; j++) { document.write(mat[i][j] + " "); } document.write("<br>"); } } // Function to change the value of the middle element // of the matrix to the sum of surrounding elements function changemiddle(mat,n) { // Change the middle element mat[Math.floor(n / 2)][Math.floor(n / 2)] = mat[Math.floor(n / 2) - 1][Math.floor(n / 2)] + mat[Math.floor(n / 2)][Math.floor(n / 2) - 1] + mat[Math.floor(n / 2) + 1][Math.floor(n / 2)] + mat[Math.floor(n / 2)][Math.floor(n / 2) + 1]; // Function call to print the matrix print(mat, n); } // Driver code let mat = [ [ 2, 1, 7 ], [ 3, 7, 2 ], [ 5, 4, 9 ]] ; changemiddle(mat, 3) // This code is contributed by rag2127 </script>
Producción:
2 1 7 3 10 2 5 4 9
Complejidad de tiempo: O (n * m), aquí n es el número de filas y m es el número de columna.
Publicación traducida automáticamente
Artículo escrito por gfg_sal_gfg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA