# 矩阵初探## 题目描述本题是代码填空题按要求补充给出代码的空白即可通过题目。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
#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;
}
原文地址: https://www.cveoy.top/t/topic/ibj3 著作权归作者所有。请勿转载和采集!