Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Định thức lớn nhất của ma trận 3x3 với các phần tử 0 hoặc n trong C++

Đề bài

Cho số nguyên dương n, tìm ma trận 3x3 chỉ chứa 0 hoặc n sao cho định thức lớn nhất.

Với n=15, ma trận tối ưu: {{15,15,0},{0,15,15},{15,0,0}} Định thức max = 2 * n³ = 2 * 15³ = 6750.

Thuật toán

Định thức lớn nhất của ma trận 3x3 với phần tử ∈ {0, n} luôn là 2 * n³. Ma trận đạt giá trị này có dạng: các phần tử trên đường chéo chính và một đường chéo phụ là n, còn lại 0.

Ví dụ minh họa (C++)

#include <bits/stdc++.h>
using namespace std;

int getMaxDeterminant(int n) {
    return 2 * n * n * n;
}

void printMatrix(int n) {
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 3; ++j) {
            if ((i == 0 && j == 2) || (i == 1 && j == 0) || (i == 2 && j == 1))
                printf("%-5d", 0);
            else
                printf("%-5d", n);
        }
        printf("\n");
    }
}

int main() {
    int n = 15;
    cout << "Ma tran la:\n";
    printMatrix(n);
    cout << "\nDinh thuc lon nhat = " << getMaxDeterminant(n) << endl;
    return 0;
}

Kết quả

Ma tran la:
15   15   0
0    15   15
15   0    0
Dinh thuc lon nhat = 6750