矩阵的基本变换

任务

实现矩阵的基本变换(矩阵之间的 $+、-、×$)。

接口

结构体 Matrix
成员变量 int n,m 矩阵大小
int a[][] 矩阵内容
重载运算符 $+、-、×$
成员函数 void clear() 清空矩阵

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const int MAXN = 1010;
const int MAXM = 1010;
struct Matrix{
int n,m;
int a[MAXN][MAXM];
void clear(){
n = m = 0;
//memset:作用是在一段内存块中填充某个给定的值。
//它是对较大的结构体或数组进行清零操作的一种最快方法。
memset(a,0,sizeof(a));
}
//operator可以定义运算符,让程序比较简洁。
Matrix operator +(const Matrix &b) const{
Matrix tmp;
tmp.n = n; tmp.m = m;
for(int i=0; i<n; ++i)
for(int j=0; j<m; ++j)
tmp.a[i][j]=a[i][j]+b.a[i][j];
return tmp;
}
Matrix operator -(const Matrix &b) const{
Matrix tmp;
tmp.n = n; tmp.m = m;
for(int i=0; i<n; ++i)
for(int j=0; j<m; ++j)
tmp.a[i][j]=a[i][j]-b.a[i][j];
return tmp;
}
Matrix operator *(const Matrix &b) const{
Matrix tmp;
tmp.clear();
tmp.n = n; tmp.m = b.m;
for(int i=0; i<n; ++i)
for(int j=0; j<b.m; ++j)
for(int k=0; k<m; ++k)
tmp.a[i][j]+=a[i][k]*b.a[k][j];
return tmp;
}
};
文章目录
  1. 1. 任务
  2. 2. 接口
  3. 3. 代码

20160604-acm-12/

本页二维码