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> |
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.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Read More here to that Topic: geeksforgeeks.org/filling-diagonal-to-make-the-sum-of-every-row-column-and-diagonal-equal-of-3×3-matrix/ […]
… [Trackback]
[…] Read More here on that Topic: geeksforgeeks.org/filling-diagonal-to-make-the-sum-of-every-row-column-and-diagonal-equal-of-3×3-matrix/ […]