按矩阵乘法定义累加 A 的行和 B 的列的对应乘积,输出结果矩阵。
OJ: noi_openjudge
题目 ID: ch0108-09
难度:普及-
标签:矩阵模拟python
日期: 2026-07-30 23:01
题意
计算
思路
结果的第 A[i] 与
代码
cpp
#include <cstdio>
int n,m,k;
int a[200][200];
int b[200][200];
int c[200][200];
int main(){
int i,j;
scanf("%d%d%d",&n,&m,&k);
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
for (i=1;i<=m;i++){
for (j=1;j<=k;j++){
scanf("%d",&b[i][j]);
}
}
int x,y;
for (i=1;i<=n;i++){
for (j=1;j<=k;j++){
for(x=1;x<=m;x++){
c[i][j] += a[i][x]*b[x][j];
}
printf("%d ",c[i][j]);
}
printf("\n");
}
return 0;
}复杂度
总结
Python代码
python
row_count, shared_count, column_count = map(int, input().split())
first = [list(map(int, input().split())) for _ in range(row_count)]
second = [list(map(int, input().split())) for _ in range(shared_count)]
for row in first:
print(*(sum(row[index] * second[index][column] for index in range(shared_count)) for column in range(column_count)))C++代码
cpp
#include <cstdio>
int n,m,k;
int a[200][200];
int b[200][200];
int c[200][200];
int main(){
int i,j;
scanf("%d%d%d",&n,&m,&k);
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
for (i=1;i<=m;i++){
for (j=1;j<=k;j++){
scanf("%d",&b[i][j]);
}
}
int x,y;
for (i=1;i<=n;i++){
for (j=1;j<=k;j++){
for(x=1;x<=m;x++){
c[i][j] += a[i][x]*b[x][j];
}
printf("%d ",c[i][j]);
}
printf("\n");
}
return 0;
}复杂度
时间复杂度为
总结
矩阵乘法不是对应相乘,而是“一行乘一列”的内积。