Filling diagonal to make the sum of every row, column and diagonal equal of 3x3 matrix
Last Updated :
08 Dec, 2022
Improve
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++ 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 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 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# 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 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..
?>
<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.