📜  每个值为 0 或 n 的矩阵的最大行列式

📅  最后修改于: 2022-05-13 01:57:23.162000             🧑  作者: Mango

每个值为 0 或 n 的矩阵的最大行列式

我们给了一个正数 n,我们必须找到一个 3*3 的矩阵,它可以由 0 或 n 组合而成,并且具有最大行列式。

例子 :

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

解释:
对于任何元素为 0 或 n 的 3*3 矩阵,最大可能的行列式为2*(n^3)。 .具有最大行列式的矩阵也具有以下形式:
0
0 n n
n 0 0

C++
// C++ program to find  maximum possible determinant
// of 0/n matrix.
#include 
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


Javascript


输出 :

Maximum Determinant = 6750
Resultant Matrix :
15 15  0
0  15 15
15 0  15

练习:将上述解决方案扩展为广义 kxk 矩阵。