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

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

Cho ma trận vuông M. Kiểm tra ma trận Idempotent: M × M = M.

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

Ví dụ

Input: {{2,-2,-4},{-1,3,4},{1,-2,-3}} → Idempotent
Input: {{3,0,0},{0,2,0},{0,0,3}} → Không Idempotent

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])
        Gọi nhanMaTran(a, res)
        So sánh a[i][j] với res[i][j], nếu khác → false
        Trả về true
    main()
        a = {{1,-1,-1},{-1,1,1},{1,-1,-1}}
        Nếu kiemTra(a) in "Idempotent" 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]){
    int res[size][size];
    nhanMaTran(a, res);
    for (int i = 0; i < size; i++)
        for (int j = 0; j < size; j++)
            if (a[i][j] != res[i][j])
                return false;
    return true;
}

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

Kết quả đầu ra

là ma trận Idempotent