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

原题链接

传送门

代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

const int N=20;
int a[N][N],b[N][N],c[N][N];

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		int n,k,l,m;
		
		scanf("%d%d",&n,&k);
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<k;j++)
			{
				scanf("%d",&a[i][j]);
			}
		}
		scanf("%d%d",&l,&m);
		for(int i=0;i<l;i++)
		{
			for(int j=0;j<m;j++)
			{
				scanf("%d",&b[i][j]);
			}
		}
		
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				c[i][j]=0;
				for(int h=0;h<k;h++)
				{
					c[i][j]+=a[i][h]*b[h][j];
				}
				printf("%d",c[i][j]);
				if(j!=m-1)	printf(" ");
			}
			printf("\n");
		}
	}
	
	return 0;
}

总结

1.矩阵乘法是啥对我来说可能是这道题最大的难点,矩阵乘法,简单来说,给定两个矩阵,第一个矩阵的列数和第二个矩阵的行数相等,两个矩阵相乘的结果是,一个新的矩阵,新的矩阵行数和第一个矩阵相等,列数和第二个矩阵相等,比如一个2行3列的矩阵,乘以一个3行2列的矩阵,答案是一个2行2列的矩阵,答案矩阵的第一行第一个元素是,第一个矩阵第一行的所有元素和第二个矩阵第一列的所有元素逐项相乘并求和,答案矩阵第一行第二个元素是,第一个矩阵第一行所有元素和第二个矩阵第二列所有元素逐项相乘并求和

2.题目保证了第一个矩阵的列数等于第二个矩阵的行数

3.行尾没有空格,注意判断每一行最后一个元素的数组下标

4.每一次使用c数组都需要初始化,防止前一次循环对当前循环产生影响

5.(有时候感觉一摸一样的代码难以ac,重新敲一遍可以通过,算是一个魔咒还是因为啥原原因......)

相关推荐
yurenshi16682 小时前
自媒体矩阵防封号工具测评:聚媒通 IP 隔离版对比融媒宝、新榜两款工具优劣
tcp/ip·矩阵·媒体
知识分享小能手2 小时前
统计学学习教程,从入门到精通,参数估计 — 知识点详解与公式推导(10)
学习·机器学习·概率论
有Li2 小时前
EvoMDT:用于多癌种结构化临床决策的自进化多智能体系统文献速递/医学智能体前沿
人工智能·学习·分类·文献·医学生
殷忆枫3 小时前
AI笔记三十七:AI边缘端道桥安全监测系统:YOLOv8n推理与Web监控全解析
笔记·yolo
yurenshi16683 小时前
自媒体多账号管理工具 4 款实测:聚媒通 / 融媒宝 / 新榜小豆芽 / 矩阵通横向对比,快速选型
大数据·矩阵·媒体
逸模4 小时前
轻加盟模式,稳住品牌统一调性的思路
笔记·建模·公装·翻模·交底
whyTeaFo4 小时前
GAMES101: Lecture 10: Geometry 1 (Introduction) ppt笔记
笔记
sulikey5 小时前
个人Linux操作系统学习笔记11 - 环境变量
linux·笔记·学习
治愈系贝壳6 小时前
ARM --- day 6 时钟
linux·arm开发·学习
ysa0510306 小时前
【板子】拓扑序计数
c++·笔记·算法·板子