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

Kiểm tra ma trận Involutory trong C++

Cho ma trận vuông M[r][c]. Kiểm tra xem có phải ma trận Involutory hay không. Ma trận Involutory: M × M = I (ma trận đơn vị). Ma trận đơn vị: đường chéo chính = 1, các phần tử khác = 0.

Kiểm tra ma trận Involutory trong C++

Ví dụ

Input: {{1,0,0},{0,-1,0},{0,0,-1}} → Có
Input: {{3,0,0},{0,2,0},{0,0,3}} → Không

Thuật toán

BẮT ĐẦU
    #define size 3
    Hàm nhanMaTran(int a[][size], int res[][size])
        Nhân a với a lưu vào res
    Hàm kiemTra(int a[size][size])
        Gọi nhanMaTran(a, res)
        Với i,j: nếu i==j và res[i][j]!=1 → false
                 nếu i!=j và res[i][j]!=0 → false
        Trả về true
    main()
        a = {{1,0,0},{0,-1,0},{0,0,-1}}
        Nếu kiemTra(a) in "Involutory" ngược lại "không phải"
KẾT THÚC

Ví dụ mã C++

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

void nhanMaTran(int a[][size], int res[][size]){
    for (int i = 0; i < size; i++){
        for (int j = 0; j < size; j++){
            res[i][j] = 0;
            for (int k = 0; k < size; k++)
                res[i][j] += a[i][k] * a[k][j];
        }
    }
}

bool kiemTra(int a[size][size]){
    int res[size][size];
    nhanMaTran(a, res);
    for (int i = 0; i < size; i++){
        for (int j = 0; j < size; j++){
            if (i == j && res[i][j] != 1) return false;
            if (i != j && res[i][j] != 0) return false;
        }
    }
    return true;
}

int main(){
    int a[size][size] = {{1,0,0},{0,-1,0},{0,0,-1}};
    if (kiemTra(a))
        cout << "là ma trận Involutory";
    else
        cout << "không phải ma trận Involutory";
    return 0;
}

Kết quả đầu ra

là ma trận Involutory