C++ 程序 检查 Involutory Matrix
给定一个矩阵,任务是检查矩阵是否是 Involutory Matrix。
Involutory Matrix : 如果矩阵乘以自己返回单位矩阵,则称其为 Involutory Matrix。这是其自身的逆矩阵。如果 A * A = I ,则矩阵 A 被称为 Involutory Matrix,其中 I 是单位矩阵。
例子:
输入 : mat[N ] [ N ] = { {1,0,0},
{0,-1,0},
{0,0,-1}}
输出 : Involutory Matrix
输入 : mat[N ] [ N ] = { {1,0,0},
{0,1,0},
{0,0,1}}
输出 : Involutory Matrix
// 实现 Involutory Matrix 的程序
#include <bits/stdc++.h>
#define N 3
using namespace std;
// 矩阵乘以自身的函数
void multiply(int mat[][N], int res[][N])
{
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
res[i][j] = 0;
for (int k = 0; k < N; k++)
res[i][j] += mat[i][k] * mat[k][j];
}
}
}
// 检查 Involutory Matrix 的函数
bool InvolutoryMatrix(int mat[N][N])
{
int res[N][N];
// 矩阵乘法函数调用
multiply(mat, res);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (i == j && res[i][j] != 1)
return false;
if (i != j && res[i][j] != 0)
return false;
}
}
return true;
}
// 主函数
int main()
{
int mat[N][N] = { { 1, 0, 0 },
{ 0, -1, 0 },
{ 0, 0, -1 } };
// 调用函数。如果函数返回 true,则执行 if 部分,否则执行 else 部分
if (InvolutoryMatrix(mat))
cout << "Involutory Matrix";
else
cout << "Not Involutory Matrix";
return 0;
}
输出 :
Involutory Matrix
时间复杂度: O(N 3 )
辅助空间 : O(N 2 )