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!



