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.