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++
// C++ program to find maximum possible determinant // of 0/n matrix. #include <bits/stdc++.h> using namespace std; // Function for maximum determinant int maxDet( int n) { return (2*n*n*n); } // Function to print resultant matrix void resMatrix ( int n) { for ( int i = 0; i < 3; i++) { for ( int j = 0; j < 3; j++) { // three position where 0 appears if (i == 0 && j == 2) cout << "0 " ; else if (i == 1 && j == 0) cout << "0 " ; else if (i == 2 && j == 1) cout << "0 " ; // position where n appears else cout << n << " " ; } cout << "\n" ; } } // Driver code int main() { int n = 15; cout << "Maximum Determinant = " << maxDet(n); cout << "\nResultant Matrix :\n" ; resMatrix(n); return 0; } |
Java
// Java program to find maximum possible // determinant of 0/n matrix. import java.io.*; public class GFG { // Function for maximum determinant static int maxDet( int n) { return ( 2 * n * n * n); } // Function to print resultant matrix void resMatrix( int n) { for ( int i = 0 ; i < 3 ; i++) { for ( int j = 0 ; j < 3 ; j++) { // three position where 0 appears 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 " ); // position where n appears else System.out.print(n + " " ); } System.out.println( "" ); } } // Driver code 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); } } // This code is contributed by vt_m. |
Python3
# Python 3 program to find maximum # possible determinant of 0/n matrix. # Function for maximum determinant def maxDet(n): return 2 * n * n * n # Function to print resultant matrix def resMatrix(n): for i in range ( 3 ): for j in range ( 3 ): # three position where 0 appears 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 = " " ) # position where n appears else : print (n, end = " " ) print ( "\n" ) # Driver code n = 15 print ( "Maximum Detrminat=" , maxDet(n)) print ( "Resultant Matrix:" ) resMatrix(n) # This code is contributed by Shrikant13 |
C#
// C# program to find maximum possible // determinant of 0/n matrix. using System; public class GFG { // Function for maximum determinant static int maxDet( int n) { return (2 * n * n * n); } // Function to print resultant matrix void resMatrix( int n) { for ( int i = 0; i < 3; i++) { for ( int j = 0; j < 3; j++) { // three position where 0 appears 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 " ); // position where n appears else Console.Write(n + " " ); } Console.WriteLine( "" ); } } // Driver code 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); } } // This code is contributed by vt_m. |
PHP
<?php // PHP program to find maximum // possible determinant of 0/n matrix. // Function for maximum determinant function maxDet( $n ) { return (2 * $n * $n * $n ); } // Function to print // resultant matrix function resMatrix ( $n ) { for ( $i = 0; $i < 3; $i ++) { for ( $j = 0; $j < 3; $j ++) { // three position // where 0 appears if ( $i == 0 && $j == 2) echo "0 " ; else if ( $i == 1 && $j == 0) echo "0 " ; else if ( $i == 2 && $j == 1) echo "0 " ; // position where n appears else echo $n , " " ; } echo "\n" ; } } // Driver code $n = 15; echo "Maximum Determinant = " , maxDet( $n ); echo "\nResultant Matrix :\n" ; resMatrix( $n ); // This code is contributed // by nitin mittal. ?> |
Javascript
<script> // Java script program to find maximum possible // determinant of 0/n matrix. // Function for maximum determinant function maxDet(n) { return (2 * n * n * n); } // Function to print resultant matrix function resMatrix(n) { for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { // Three position where 0 appears 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 " ); // Position where n appears else document.write(n + " " ); } document.write( "<br>" ); } } // Driver code let n = 15; document.write( "Maximum Determinant = " + maxDet(n) + "<br>" ); document.write( "Resultant Matrix :<br>" ); resMatrix(n); // This code is contributed by sravan kumar </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.
This article is contributed by Aarti_Rathi and Shivam Pradhan (anuj_charm). If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Login to comment...