Filling diagonal to make the sum of every row, column and diagonal equal of 3×3 matrix

Given 9 elements in a 3 x 3 matrix where the value of diagonals is 0. We need to find the values in the diagonal to make the sum of every row, column, and diagonal equal.
Examples:
Input:
0 3 6
5 0 5
4 7 0
Output:
6 3 6
5 5 5
4 7 4
Explanation:
Now the value of the sum of
any row or column is 15
Input:
0 4 4
4 0 4
4 4 0
Output:
4 4 4
4 4 4
4 4 4
Approach:
- Let’s say the diagonal is x, y and z.
- The value of x will be ( x2, 3 + x3, 2 ) / 2.
- The value of z will be ( x1, 2 + x2, 1 ) / 2.
- The value of y will be ( x + z ) / 2.
Below is the implementation of the above approach:
Implementation:
C++
// C++ program to implement// the above problem#include <bits/stdc++.h>using namespace std;// Function to print the matrixvoid print(int arr[3][3]){ int i = 0, j = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) cout << arr[i][j] << " "; cout << endl; }}// Function to find the diagonal valuesvoid find(int arr[3][3]){ arr[0][0] = (arr[1][2] + arr[2][1]) / 2; arr[2][2] = (arr[0][1] + arr[1][0]) / 2; arr[1][1] = (arr[0][0] + arr[1][1]) / 2; // Print the new matrix with diagonals cout << "Matrix with diagonals:\n"; print(arr);}// Driver codeint main(){ // Initialize all the elements of a matrix int arr[3][3] = { { 0, 54, 48 }, { 36, 0, 78 }, { 66, 60, 0 } }; cout << "Matrix initially:\n"; print(arr); find(arr); return 0;} |
Java
// Java program to implement // the above problem import java.io.*;public class GFG{// Function to print the matrix static void print(int arr[][]) { int i = 0, j = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) System.out.print( arr[i][j] + " "); System.out.println(); } } // Function to find the diagonal values static void find(int arr[][]) { arr[0][0] = (arr[1][2] + arr[2][1]) / 2; arr[2][2] = (arr[0][1] + arr[1][0]) / 2; arr[1][1] = (arr[0][0] + arr[1][1]) / 2; // Print the new matrix with diagonals System.out.print( "Matrix with diagonals:\n"); print(arr); } // Driver code public static void main(String args[]){ // Initialize all the elements of a matrix int arr[][] = { { 0, 54, 48 }, { 36, 0, 78 }, { 66, 60, 0 } }; System.out.print( "Matrix initially:\n"); print(arr); find(arr); } }// This code is contributed by Arnab Kundu |
Python3
# Python3 program to implement# the above problem# Function to print the matrixdef print_(arr, n): for i in range(n): for j in range(n): print(arr[i][j], end = " ") print("\n", end= "")# Function to find the diagonal valuesdef find(arr, n): arr[0][0] = (arr[1][2] + arr[2][1]) // 2 arr[2][2] = (arr[0][1] + arr[1][0]) // 2 arr[1][1] = (arr[0][0] + arr[1][1]) // 2 print("\nMatrix with diagonals:") print_(arr, n)# Driver codearr = [[0, 54, 48], [36, 0, 78], [66, 60, 0]]n = 3print("Matrix initially:")print_(arr, n)find(arr, n)# This code is contributed by Shrikant13 |
C#
// C# program to implement // the above problem using System;class GFG { // Function to print the matrix static void print(int [,]arr) { int i = 0, j = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) Console.Write( arr[i, j] + " "); Console.WriteLine(); } } // Function to find the diagonal values static void find(int [,]arr) { arr[0, 0] = (arr[1, 2] + arr[2, 1]) / 2; arr[2, 2] = (arr[0, 1] + arr[1, 0]) / 2; arr[1, 1] = (arr[0, 0] + arr[1, 1]) / 2; // Print the new matrix with diagonals Console.Write( "Matrix with diagonals:\n"); print(arr); } // Driver code public static void Main() { // Initialize all the elements of a matrix int [,]arr = { { 0, 54, 48 }, { 36, 0, 78 }, { 66, 60, 0 } }; Console.Write( "Matrix initially:\n"); print(arr); find(arr); } } // This code is contributed by Ryuga |
PHP
<?php// PHP program to implement// the above problem Function// to print the matrixfunction printt( $arr){ $i = 0; $j = 0; for ($i = 0; $i < 3; $i++) { for ($j = 0; $j < 3; $j++) echo $arr[$i][$j], " "; echo "\n"; }}// Function to find the diagonal valuesfunction find( $arr){ $arr[0][0] = ($arr[1][2] + $arr[2][1]) / 2; $arr[2][2] = ($arr[0][1] + $arr[1][0]) / 2; $arr[1][1] = ($arr[0][0] + $arr[1][1]) / 2; // Print the new matrix with diagonals echo "Matrix with diagonals:\n"; printt($arr);}// Driver code// Initialize all the elements of a matrix$arr =array(array( 0, 54, 48 ), array( 36, 0, 78 ), array( 66, 60, 0 ));echo "Matrix initially:\n";printt($arr);find($arr);#This Code is contributed by ajit..?> |
Javascript
<script>// Java script program to implement// the above problem// Function to print the matrixfunction print(arr){ let i = 0, j = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) document.write( parseInt(arr[i][j]) + " "); document.write("<br>"); }}// Function to find the diagonal valuesfunction find(arr){ arr[0][0] = (arr[1][2] + arr[2][1]) / 2; arr[2][2] = (arr[0][1] + arr[1][0]) / 2; arr[1][1] = (arr[0][0] + arr[1][1]) / 2; // Print the new matrix with diagonals document.write( "Matrix with diagonals:<br>"); print(arr);}// Driver code // Initialize all the elements of a matrix let arr = [[ 0, 54, 48 ], [36, 0, 78 ], [ 66, 60, 0 ]]; document.write( "Matrix initially:<br>"); print(arr); find(arr);// This code is contributed by sravan kumar Gottumukkala</script> |
Output
Matrix initially: 0 54 48 36 0 78 66 60 0 Matrix with diagonals: 69 54 48 36 34 78 66 60 45
Complexity Analysis:
- Time Complexity: O(1), the code will run in a constant time.
- Auxiliary Space: O(1), no extra space is required, so it is a constant.
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!



