Replace the middle element of matrix with sum of surrounding elements

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> |
Output
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.
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



