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 matrix void 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 values void 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 code int 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 matrix def 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 values def 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 code arr = [[ 0 , 54 , 48 ],
[ 36 , 0 , 78 ],
[ 66 , 60 , 0 ]]
n = 3
print ( "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 matrix function 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 values function 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 matrix function 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 values function 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.