Maximum determinant of a matrix with every values either 0 or n
We have given a positive number n, and we have to find a 3*3 matrix which can be formed with combination of 0 or n and has maximum determinant.
Examples :
Input : n = 3
Output : Maximum determinant = 54
Resultant Matrix :
3 3 0
0 3 3
3 0 3
Input : n = 13
Output : Maximum determinant = 4394
Resultant Matrix :
13 13 0
0 13 13
13 0 13
Explanation:
For any 3*3 matrix having elements either 0 or n,
the maximum possible determinant is 2*(n^3)..
Also a matrix having maximum determinant is of form:
n n 0
0 n n
n 0 0
Implementation:
C++
#include <bits/stdc++.h>
using namespace std;
int maxDet( int n)
{
return (2*n*n*n);
}
void resMatrix ( int n)
{
for ( int i = 0; i < 3; i++)
{
for ( int j = 0; j < 3; j++)
{
if (i == 0 && j == 2)
cout << "0 " ;
else if (i == 1 && j == 0)
cout << "0 " ;
else if (i == 2 && j == 1)
cout << "0 " ;
else
cout << n << " " ;
}
cout << "\n" ;
}
}
int main()
{
int n = 15;
cout << "Maximum Determinant = " << maxDet(n);
cout << "\nResultant Matrix :\n" ;
resMatrix(n);
return 0;
}
|
Java
import java.io.*;
public class GFG
{
static int maxDet( int n)
{
return ( 2 * n * n * n);
}
void resMatrix( int n)
{
for ( int i = 0 ; i < 3 ; i++)
{
for ( int j = 0 ; j < 3 ; j++)
{
if (i == 0 && j == 2 )
System.out.print( "0 " );
else if (i == 1 && j == 0 )
System.out.print( "0 " );
else if (i == 2 && j == 1 )
System.out.print( "0 " );
else
System.out.print(n + " " );
}
System.out.println( "" );
}
}
static public void main (String[] args)
{
int n = 15 ;
GFG geeks= new GFG();
System.out.println( "Maximum Determinant = "
+ maxDet(n));
System.out.println( "Resultant Matrix :" );
geeks.resMatrix(n);
}
}
|
Python3
def maxDet(n):
return 2 * n * n * n
def resMatrix(n):
for i in range ( 3 ):
for j in range ( 3 ):
if i = = 0 and j = = 2 :
print ( "0" , end = " " )
else if i = = 1 and j = = 0 :
print ( "0" , end = " " )
else if i = = 2 and j = = 1 :
print ( "0" , end = " " )
else :
print (n, end = " " )
print ( "\n" )
n = 15
print ( "Maximum Detrminat=" , maxDet(n))
print ( "Resultant Matrix:" )
resMatrix(n)
|
C#
using System;
public class GFG
{
static int maxDet( int n)
{
return (2 * n * n * n);
}
void resMatrix( int n)
{
for ( int i = 0; i < 3; i++)
{
for ( int j = 0; j < 3; j++)
{
if (i == 0 && j == 2)
Console.Write( "0 " );
else if (i == 1 && j == 0)
Console.Write( "0 " );
else if (i == 2 && j == 1)
Console.Write( "0 " );
else
Console.Write(n + " " );
}
Console.WriteLine( "" );
}
}
static public void Main (String []args)
{
int n = 15;
GFG geeks= new GFG();
Console.WriteLine( "Maximum Determinant = "
+ maxDet(n));
Console.WriteLine( "Resultant Matrix :" );
geeks.resMatrix(n);
}
}
|
PHP
<?php
function maxDet( $n )
{
return (2 * $n * $n * $n );
}
function resMatrix ( $n )
{
for ( $i = 0; $i < 3; $i ++)
{
for ( $j = 0; $j < 3; $j ++)
{
if ( $i == 0 && $j == 2)
echo "0 " ;
else if ( $i == 1 && $j == 0)
echo "0 " ;
else if ( $i == 2 && $j == 1)
echo "0 " ;
else
echo $n , " " ;
}
echo "\n" ;
}
}
$n = 15;
echo "Maximum Determinant = " ,
maxDet( $n );
echo "\nResultant Matrix :\n" ;
resMatrix( $n );
?>
|
Javascript
<script>
function maxDet(n)
{
return (2 * n * n * n);
}
function resMatrix(n)
{
for (let i = 0; i < 3; i++)
{
for (let j = 0; j < 3; j++)
{
if (i == 0 && j == 2)
document.write( "0 " );
else if (i == 1 && j == 0)
document.write( "0 " );
else if (i == 2 && j == 1)
document.write( "0 " );
else
document.write(n + " " );
}
document.write( "<br>" );
}
}
let n = 15;
document.write( "Maximum Determinant = " +
maxDet(n) + "<br>" );
document.write( "Resultant Matrix :<br>" );
resMatrix(n);
</script>
|
Output
Maximum Determinant = 6750
Resultant Matrix :
15 15 0
0 15 15
15 0 15
Time complexity: O(1).
Auxiliary Space: O(1), since no extra space has been taken.
Exercise: Extend the above solution for a generalized k x k matrix.
Last Updated :
12 Sep, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...