Saturday, November 16, 2024
Google search engine
HomeData Modelling & AIReplace the middle element of matrix with sum of surrounding elements

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 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments