关于爆栈的一个问题
  • 板块学术版
  • 楼主Lele_Programmer
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/5/26 22:08
  • 上次更新2024/5/27 13:07:22
查看原帖
关于爆栈的一个问题
961972
Lele_Programmer楼主2024/5/26 22:08

站外题,写矩阵的时候爆栈了:

#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 但是又因为没有初始化出错,所以怎么解决啊

2024/5/26 22:08
加载中...