本文主要是介绍XTU-OJ 1146-矩阵乘法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大家可能也发现我是实时更新的,所以大家可以多点赞,觉得不懂的或者有些建议请留言评论,多给我些反馈,可以让我更好的编写博客内容。
题目描述
给你两个矩阵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 <stdio.h>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;
}
这篇关于XTU-OJ 1146-矩阵乘法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!