Open In App

Maximum determinant of a matrix with every values either 0 or n

Improve
Improve
Like Article
Like
Save
Share
Report

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.



Last Updated : 12 Sep, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads