大家可能也发现我是实时更新的,所以大家可以多点赞,觉得不懂的或者有些建议请留言评论,多给我些反馈,可以让我更好的编写博客内容。
题目描述
给你两个矩阵A(n*k),B(k*m),请求A*B。
输入
第一行是一个整数K,表示样例的个数。 每个样例包含两个矩阵A和B。 每个矩阵的第一行是两个整数n,m,(1≤n,m≤10)表示矩阵的行和列 以后的n行,每行m个整数,每个整数的绝对值不超过100。输入保证A和B是可乘的。
输出
输出每个样例的结果矩阵,矩阵的整数之间用一个空格隔开,行尾无空格。
样例输入
2 2 2 1 1 1 1 2 1 1 1 2 2 1 1 1 1 2 2 1 1 1 0样例输出
2 2 2 1 2 1
解题思路:本题就是在于 矩阵运算,其他的没什么大问题,细节注意 两矩阵相乘,新的行列是左矩阵的行和右矩阵的列组成的。所以注意 20、 22 、25 行的for循环的判断值。
AC代码:
- #include
-
- int K,n1,m1,n2,m2;
- int A[11][11],B[11][11],C[11][11];
-
- int main()
- {
- scanf("%d",&K);
- while ( K --)
- {
- scanf("%d %d",&n1,&m1); // 输入
- for (int i = 1; i <= n1; i ++)
- for (int j = 1; j <= m1; j ++)
- scanf("%d",&A[i][j]);
- scanf("%d %d",&n2,&m2);
- for (int i = 1; i <= n2; i ++)
- for (int j = 1; j <= m2; j ++)
- scanf("%d",&B[i][j]);
-
- for (int i = 1; i <= n1; i ++) // 矩阵相乘
- {
- for (int j = 1; j <= m2; j ++)
- {
- int t = 0;
- for (int k = 1; k <= m1; k ++)
- t += (A[i][k]*B[k][j]);
- C[i][j] = t;
- }
- }
-
- for (int i = 1; i <= n1; i ++) // 输出
- {
- printf("%d",C[i][1]);
- for (int j = 2; j <= m2; j ++)
- printf(" %d",C[i][j]);
- puts("");
- }
- }
- return 0;
- }