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; }
 
posted @   yyk666666  阅读(99)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示