rt,模板的两个矩阵相乘。我将其封装后就死循环了,数组开到 3×3 就不死循环,但是没看出来哪里错了(晕
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 5e2 + 10, mod = 1e9 + 7;
int n, p, m;
struct Mat {
int a[maxn][maxn];
Mat() {memset(a, 0, sizeof a);}
friend Mat operator * (const Mat &A, const Mat &B) {
Mat C;
for (int k = 1; k <= p; ++k)
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
C.a[i][j] = (C.a[i][j] + A.a[i][k] * B.a[k][j]) % mod;
return C;
}
}A, B;
signed main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin >> n >> p >> m;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= p; ++j) cin >> A.a[i][j];
for (int i = 1; i <= p; ++i)
for (int j = 1; j <= m; ++j) cin >> B.a[i][j];
A = A * B;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) cout << A.a[i][j] << ' ';
cout << '\n';
}
}