题目1489:计算两个矩阵的乘积
时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:5744
解决:1234
- 题目描述:
-
计算两个矩阵的乘积,第一个是2*3,第二个是3*2
- 输入:
-
输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵
- 输出:
-
一个2*2的矩阵(每一个数字后都跟一个空格)
- 样例输入:
-
1 2 3 3 4 5 6 7 8 9 10 11
- 样例输出:
-
52 58 100 112
- 来源:
- 2012年哈尔滨工业大学计算机研究生机试真题
- 矩阵乘积的计算是 52 = 1*6+2*8+3*10 58 = 1*7+2*9+3*11 100 = 3*6+4*8+5*10 112 = 3*7+4*9+5*11
- 即 c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0] i行j列互乘相加
-
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> #include<stack> using namespace std; int c[5][5]; int main() { int a[5][5],b[5][5]; while(~scanf("%d%d%d",&a[0][0],&a[0][1],&a[0][2])) { for(int i=1; i<=1; i++) { for(int j=0; j<=2; j++) scanf("%d",&a[i][j]); } for(int i=0; i<=2; i++) { for(int j=0; j<=1; j++) scanf("%d",&b[i][j]); } for(int i=0; i<2; i++) { for(int j=0; j<2; j++) { c[i][j]=0; for(int k=0; k<3; k++) c[i][j] = c[i][j] + a[i][k]*b[k][j]; } } for(int i=0; i<2; i++) { for(int j=0; j<2; j++) { printf("%d ",c[i][j]); } printf(" "); } } return 0; }