09:矩阵乘法
描述
计算两个矩阵的乘法。n*m阶的矩阵A乘以m*k阶的矩阵B得到的矩阵C 是n*k阶的,且C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + …… +A[i][m-1]*B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)。
输入第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m, k均小于100
然后先后输入A和B两个矩阵,A矩阵n行m列,B矩阵m行k列,矩阵中每个元素的绝对值不会大于1000。输出输出矩阵C,一共n行,每行k个整数,整数之间以一个空格分开。
样例输入
3 2 3 1 1 1 1 1 1 1 1 1 1 1 1样例输出
2 2 2 2 2 2 2 2 2
题意
输入两个矩阵,A矩阵n行m列,B矩阵m行k列,根据题目所给出的公式,计算a*b的乘积,输出c矩阵n行k列
思路
根据上述矩阵乘法的定义,n*m和m*k的两个矩阵相乘得到n*k的矩阵,而根据表达式,可以使用三个循环来完成矩阵乘法运算
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n,k,a[110][110],b[110][110],c[110][110]={0};
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];//输入n*m矩阵a
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=k;j++){
cin>>b[i][j];//输入m*k矩阵b
}
}
for(int x=1;x<=m;x++){//结果矩阵c为n行k列,求r每一个元素的值
for(int i=1;i<=n;i++){
for(int j=1;j<=k;j++){
c[i][j]+=a[i][x]*b[x][j];
}
}
}
for(int i=1;i<=n;i++){//结果矩阵c为n行k列
for(int j=1;j<=k;j++){
cout<<c[i][j];//输出
cout<<" ";
}
cout<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现