站外题,写矩阵的时候爆栈了:
#include <bits/stdc++.h>
using namespace std;
const int N=505;
const int mod=1000000007;
int n,m,p;
struct Matrix {
int n,m;
int mat[N][N];
Matrix() {
for (int i=0;i<N;++i) {
for (int j=0;j<N;++j) {
mat[i][j]=0;
}
}
}
Matrix(int n,int m) {
this->n=n;
this->m=m;
for (int i=0;i<=n;++i) {
for (int j=0;j<=m;++j) {
mat[i][j]=0;
}
}
}
int* operator [] (signed i) {
return mat[i];
}
friend Matrix operator * (Matrix a,Matrix b) {
int n,m,p;
n=a.n,m=a.m,p=b.m;
Matrix mat(n,p);
for (int i=1;i<=n;++i) {
for (int j=1;j<=p;++j) {
for (int k=1;k<=m;++k) {
mat[i][j]+=a[i][k]*b[k][j];
mat[i][j]%=mod;
}
}
}
return mat;
}
};
Matrix a,b,c;
int main() {
scanf("%d %d %d",&n,&p,&m);
a.n=n,a.m=p;
b.n=p,b.m=m;
for (int i=1;i<=n;++i) {
for (int j=1;j<=p;++j) {
scanf("%d",&a[i][j]);
}
}
for (int i=1;i<=p;++i) {
for (int j=1;j<=m;++j) {
scanf("%d",&b[i][j]);
}
}
c=a*b;
for (int i=1;i<=n;++i) {
for (int j=1;j<=m;++j) {
printf("%d ",c[i][j]);
}
putchar(10);
}
return 0;
}
就是能不能把 struct 中的二维数组存到 static 里面啊,我尝试改成 static 但是又因为没有初始化出错,所以怎么解决啊