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

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