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!