#include<bits/stdc++.h>
using namespace std;
const int N = 25;
int tt, p;
struct Matrix{
    int n, m;
    int a[N][N];
    Matrix operator+(Matrix &b){
        Matrix t;
        memset(t.a, 0, sizeof t.a);
        if(n != b.n || m != b.m){
            t.n = t.m = -1;
            return t;
        }
        t.n = n;
        t.m = m;
        for(int i = 1; i <= n; ++i)
            for(int j = 1; j <= m; ++j)
                t.a[i][j] = a[i][j] + b.a[i][j];
        return t;
    }
    Matrix operator-(Matrix &b){
        Matrix t;
        memset(t.a, 0, sizeof t.a);
        if(n != b.n || m != b.m){
            t.n = t.m = -1;
            return t;
        }
        t.n = n;
        t.m = m;
        for(int i = 1; i <= n; ++i)
            for(int j = 1; j <= m; ++j)
                t.a[i][j] = a[i][j] - b.a[i][j];
        return t;
    }
    Matrix operator*(Matrix &b){
        Matrix t;
        memset(t.a, 0, sizeof t.a);
        if(m != b.n){
            t.n = t.m = -1;
            return t;
        }
        t.n = n;
        t.m = b.m;
        for(int i = 1; i <= n; ++i)
            for(int j = 1; j <= b.m; ++j)
                for(int k = 1; k <= m; ++k)
                    t.a[i][j] += a[i][k] * b.a[k][j];
        return t;
    }
    void print(){
        if(n == -1 && m == -1){
            printf("error\n");
            return;
        }
        printf("%d %d\n", n, m);
        for(int i = 1; i <= n; ++i){
            for(int j = 1; j <= m; ++j)
                printf("%d ", a[i][j]);
            printf("\n");
        }
    }
} m[N], ans;
int main() {
    scanf("%d%d", &tt, &p);
    for(int i = 1; i <= tt; ++i){
        scanf("%d%d", &m[i].n, &m[i].m);
        for(int r = 1; r <= m[i].n; ++r)
            for(int s = 1; s <= m[i].m; ++s)
                scanf("%d", &m[i].a[r][s]);
    }
    for(int i = 1; i <= p; ++i){
        int op, r, s;
        scanf("%d%d%d", &op, &r, &s);
        if(op == 1)
            ans = m[r] + m[s];
        else if(op == 2)
            ans = m[r] - m[s];
        else if(op == 3)
            ans = m[r] * m[s];
        ans.print();
    }
    
    return 0;
}
# 矩阵初探## 题目描述本题是代码填空题按要求补充给出代码的空白即可通过题目。c++#includebitsstdc++husing namespace std;const int N = 25;int tt p;struct Matrix int n m; int aNN; Matrix operator+Matrix &b Matrix t; m

原文地址: https://www.cveoy.top/t/topic/ibj3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录