Given a square matrix mat[][] of odd dimensions, the task is to change the value of the middle most element of the matrix to the sum of the elements surrounding it.
Examples:
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
Approach: The middle element of the matrix of odd order will be located at the position mat[n / 2][n / 2].
Therefore directly update the element as:
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]
Below is the implementation of the above approach:
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> |
2 1 7 3 10 2 5 4 9
Time Complexity: O(n * m), Here n is No. of Rows and m is No. of Column.
Auxiliary Space: O(1), as constant extra space is required.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Information on that Topic: geeksforgeeks.org/replace-the-middle-element-of-matrix-with-sum-of-surrounding-elements/ […]