博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
L1-048 矩阵A乘以B (15 分)
阅读量:2060 次
发布时间:2019-04-29

本文共 1139 字,大约阅读时间需要 3 分钟。

给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有R​a行、Ca列,B有Rb行、Cb列,则只有C​a与Rb相等时,两个矩阵才能相乘。

输入格式:

输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过100。

输出格式:

若输入的两个矩阵的规模是匹配的,则按照输入的格式输出乘积矩阵AB,否则输出Error: Ca != Rb,其中Ca是A的列数,Rb是B的行数。

输入样例1:

2 3
1 2 3
4 5 6
3 4
7 8 9 0
-1 -2 -3 -4
5 6 7 8
输出样例1:
2 4
20 22 24 16
53 58 63 28
输入样例2:
3 2
38 26
43 -5
0 17
3 2
-11 57
99 68
81 72
输出样例2:
Error: 2 != 3

#include 
int main(){
int a1, a2, b1, b2; int a[1000][1000], b[1000][1000]; scanf("%d %d", &a1, &a2); for (int i = 1; i <= a1; i++) for (int j = 1; j <= a2; j++) scanf("%d", &a[i][j]); scanf("%d %d", &b1, &b2); for (int i = 1; i <= b1; i++) for (int j = 1; j <= b2; j++) scanf("%d", &b[i][j]); if (a2 != b1) {
printf("Error: %d != %d", a2, b1); exit(0); } printf("%d %d\n", a1, b2); for (int i = 1; i <= a1; i++) {
int flag = 0; for (int j = 1; j <= b2; j++) {
int sum = 0; for (int k = 1; k <= b1; k++) sum += a[i][k] * b[k][j]; if (flag == 0) {
printf("%d", sum); flag = 1; } else printf(" %d", sum); } printf("\n"); } return 0;}

转载地址:http://msolf.baihongyu.com/

你可能感兴趣的文章
剑指offer 37.数组中重复的数字
查看>>
剑指offer 38.丑数
查看>>
剑指offer 39.构建乘积数组
查看>>
剑指offer 57. 删除链表中重复的结点
查看>>
剑指offer 58. 链表中环的入口结点
查看>>
剑指offer 59. 把字符串转换成整数
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
leetcode 热题 Hot 100-3. 合并两个有序链表
查看>>
leetcode 热题 Hot 100-4. 对称二叉树
查看>>
Leetcode C++《热题 Hot 100-12》226.翻转二叉树
查看>>
Leetcode C++《热题 Hot 100-13》234.回文链表
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-19》543.二叉树的直径
查看>>
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>
Leetcode C++《热题 Hot 100-22》2.两数相加
查看>>
Leetcode C++《热题 Hot 100-23》3.无重复字符的最长子串
查看>>
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>