//矩阵模板
struct Matrix {
int n, m;
int **v;
Matrix (int _n = 0, int _m = 0) : n(_n), m(_m) {
v = new int*[n + 1];
for (int i = 0; i <= n; i++) {
v[i] = new int[m + 1];
}
}
void init () {
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= m; j++) {
v[i][j] = 0;
}
}
}
Matrix operator * (const Matrix B) const {
Matrix C(n, B.m);
C.init();
for (int i = 1; i <= n; i++) {
for (int k = 1; k <= m; k++) {
if (!v[i][k]) continue;
for (int j = 1; j <= B.m; j++) {
C.v[i][j] += v[i][k] * B.v[k][j];
}
}
}
return C;
}
};
bool reverse(int n) {
for (int i = 1; i <= n; i++) {
for (int j = i; j <= n; j++) {
if (a[j][i]) {
swap(a[i], a[j]);
break;
}
}
if (!a[i][i]) return false;
for (int j = 1; j <= n; j++) {
if (a[j][i] && j != i) {
for (int k = 1; k <= 2 * n; k++) {
a[j][k] ^= a[i][k];
}
}
}
}
return true;
}
矩阵模板(乘法,逆矩阵)
最新推荐文章于 2023-07-05 10:13:47 发布