日常记录:天梯赛练习集L1-048 矩阵A乘以B

news2024/11/9 0:31:35

题目:

 

给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra​行、Ca​列,B有Rb​行、Cb​列,则只有Ca​与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

解答:

题目分析:

  • 题目要求完成矩阵乘法
  • 矩阵乘法要求矩阵 A 的列数等于矩阵 B 的行数,否则不能相乘
  • 矩阵乘法得到的矩阵C大小为A的行数和B的列数
  • 矩阵乘法规则是:将 A 第 i 行的所有元素与 B 第 j 列的所有元素相乘,放到矩阵C的第 ( i , j ) 的位置
  • 题目还要求输出每个矩阵的行列数

操作实现:

  1. 定义a,b表示矩阵A的行列数,c,d表示矩阵B的行列数
  2. 创建两个相应大小的数组并传入相应数据
  3. 若b不等于c,则打印输出“Error: b != c”
  4. 若相等,则打印输出“a d”和矩阵C
  5. 矩阵C不需要我们创建一个新的数组储存,我们只需要按照矩阵乘法规则进行运算再按顺序打印第(i,j)个结果即可

代码实现:

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    int arr1[a][b];
    for (int i = 0; i < a; i++)
    {
        for (int j = 0; j < b; j++)
        {
            cin >> arr1[i][j];
        }
    }
    
    int c, d;
    cin >> c >> d;
    int arr2[c][d];
    for (int i = 0; i < c; i++)
    {
        for (int j = 0; j < d; j++)
        {
            cin >> arr2[i][j];
        }
    }
    
    if (b != c) { printf("Error: %d != %d\n", b, c); return 0; }
    
    printf("%d %d\n", a, d);
    for (int i = 0; i < a; i++)
    {
        for (int j = 0; j < d; j++)
        {
            if(j) printf(" ");
            int result = 0;
            for (int k = 0; k < b; k++)
            {
                result += arr1[i][k] * arr2[k][j];
            }
            printf("%d", result);
        }
        printf("\n");
    }
    return 0;
}

PTA题目地址

欢迎大家探讨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/420778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JAVA-模块四 流程控制语句】

JAVA-模块四 流程控制语句一 选择分支语句&#xff1a;if语句if第一种格式&#xff1a;if第二种格式 双分支&#xff1a;if的第三种格式&#xff1a;多条件分支switch多分支&#xff1a;注意&#xff1a;if语句和swich语句如何选择&#xff1a;二 循环语句&#xff1a;2.1 for循…

聚焦弹性问题,杭州铭师堂的 Serverless 之路

作者&#xff1a;王彬、朱磊、史明伟 得益于互联网的发展&#xff0c;知识的传播有了新的载体&#xff0c;使用在线学习平台的学生规模逐年增长&#xff0c;越来越多学生在线上获取和使用学习资源&#xff0c;其中教育科技企业是比较独特的存在&#xff0c;他们担当的不仅仅是…

Mars3D集成到ruoyi管理系统

尽管Mars3d的官网上提供了详尽的文档和API参考手册&#xff0c;但是在集成至ruoyi后天管理系统中时&#xff0c;还是碰到了不少问题&#xff1a; npm安装方式&#xff0c;若只安装mars3d&#xff0c;会提示找不到mars3d-cesium引用cesium相关库的时候&#xff0c;报404错误 这…

MongoDB基础学习总结及SpringBoot项目中的整合

前言 MongoDB 如今是最流行的 NoSQL 数据库之一&#xff0c;被广泛应用于各行各业中&#xff0c;很多创业公司数据库选型就直接使用了 MongoDB。MongoDB一经推出就受到了广大社区的热爱&#xff0c;可以说是对程序员最友好的一种数据库之一&#xff0c;下面主要是笔者在平常的…

大学刚毕业,用10000小时,走进字节跳动拿了offer

前言&#xff1a; 没有绝对的天才&#xff0c;只有持续不断的付出。对于我们每一个平凡人来说&#xff0c;改变命运只能依靠努力幸运&#xff0c;但如果你不够幸运&#xff0c;那就只能拉高努力的占比。 2020年7月&#xff0c;我有幸成为了字节跳动的一名测试开发&#xff0c…

IO流、多线程

FileInputStream FileOutputStream 原理&#xff1a; //1、创建一个FileOutputStream对象&#xff0c;构造方法中写入数据的目的地 FileOutStream fos new FileOutputStream("C:\\a.txt"); //2、调用FileOutputStream对象中的方法write&#xff0c;把数据写入文件中…

【微信小程序】关于实现自定义图片代替checkbox样式的记录

前言 checkbox很好使&#xff0c;使用中往往需要改变它的样式。 记录一下用自定义的图片代替原有样式的过程。 关于把checkbox从&#xff1a;变成的过程 正文 思路 问题拆分&#xff1a; ①如何修改checkbox的样式 ②如何使用图片代替原有样式 如何修改checkbox的样式 修…

氢原子的电子轨道半径、能量、速度

在https://blog.csdn.net/qq_35379989/article/details/130065868?spm1001.2014.3001.5501中我们已经给出了波尔模型的三大假设&#xff1a;定态假设、跃迁假设以及角动量量子化。 一、氢原子的轨道半径 在跃迁假设中&#xff0c;通过设定波尔模型轨道能量&#xff1a;与电子…

各种商业版本的ChatGPT已经推出了,还有必要搞个人的Chat吗?

一、引言 虽然市面上已经存在许多商业版本的ChatGPT交互产品&#xff0c;但在我们的开发中&#xff0c;决定专注于打造一个更加个性化、更贴合个人需求的智能助手。我们相信&#xff0c;每个人都是独一无二的&#xff0c;他们的需求也是各不相同的。因此&#xff0c;个人ChatG…

浅析PHP代码审计中的SQL注入漏洞

浅析PHP代码审计中的SQL注入漏洞1.概述2.普通注入3.编码注入宽字节注入二次urldecode注入4.漏洞防范gpc/rutime魔术引号过滤函数和类addslashes函数mysql_[real_]escape_string函数intval等字符转换PDO prepare预编译1.概述 SQL注入的攻击方式有下面几种&#xff1a; 在权限较…

常用电阻的作用

1、限流&#xff1a; 根据公式&#xff1a;I U / R&#xff1b;可知&#xff0c;电压固定的情况下&#xff0c;电阻越大&#xff0c;电流越小 常用于保护器件&#xff0c; 例如&#xff1a;MCU的输入输出信号线串联电阻&#xff0c;以避免电流过大&#xff0c;损坏元器件 …

快鲸scrm助力眼科机构提效客户运营,提升转化率

眼科机构普遍面临着以下几方面的业务挑战 &#xff08;1&#xff09;存在信任危机&#xff0c;用户决策周期长 眼睛是心灵的窗户&#xff0c;患者在对眼部治疗机构的选择上格外慎重&#xff0c;因而决策周期较长&#xff0c;眼科机构需要通过品牌建设、 IP 的打造、优质的产品…

SDL(2)-加载图片

加载BMP 1.使用SDL_init初始化SDL库 2.使用SDL_CreateWindow创建一个窗口 3.使用SDL_GetWindowSurface获取创建窗口的surface 4.使用SDL_LoadBMP加载一张BMP图片 5.使用SDL_BlitSurface将加载的bmp surface拷贝到窗口的surface 6.使用SDL_UpdateWindowSurface更新到窗口 …

【严重】vm2 <3.9.15 沙箱逃逸漏洞(CVE-2023-29017)

漏洞描述 vm2 是一个沙箱&#xff0c;用于在 Node.js 环境中运行不受信任的代码。宿主对象(Host objects)是指由 Node.js 的宿主环境提供的对象&#xff0c;例如全局对象、文件系统或网络请求等。 vm2 3.9.15之前版本中&#xff0c;当处理异步错误时未正确处理 Error.prepare…

中国大学哪家强?Python爬取排名榜,太棒啦(31)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 欢迎和猫妹一起&#xff0c;趣味学Python。 今日主题 如何用Python&#xff0c;抓取并分析2023中国大学排名数据。 用到的Python库有requests、bs4。 requests库 reque…

PixiJS 渲染优化

最近做在线CAD可视化与编辑&#xff0c;对前端的可视化渲染技术进行了选型&#xff0c;对于二维CAD来说一般用canvas就够了&#xff0c;但是canvas每一次平移&#xff0c;缩放&#xff0c;更新数据都需要重新计算渲染所有的图形数据&#xff0c;数据一多就显得非常卡。如果使用…

TCP和UDP在实际工作中的应用

前言 日常在网上浏览一些文章时都会看到一些介绍TCP和UDP的文章&#xff0c;每次都是草草浏览&#xff0c;而没有深入的去研究&#xff0c;这几天在做日志采集工具的时候恰好遇到一个问题&#xff0c;就是采集端将采集到的内容发送到服务端时这里采用的通信协议应该如何考量&a…

SpringBoot源码分析

SpringBoot源码分析1.启动类分析2.SpringBoot的项目启动流程1.SpringApplication构造函数1&#xff09;deduceFromClasspath()2&#xff09;getSpringFactoriesInstances2.1&#xff09;loadFactoryNames加载类名称2.2&#xff09;createSpringFactoriesInstances创建实例2.run…

gradle环境搭建

目录 gradle是什么 gradle环境搭建 IDEA 配置 Gradle 创建 Gradle 项目 gradle是什么 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置&#xff0c;也增加了基于Kotlin语言的kotlin-based …

Java基础总结(二)

文章目录一、ObjectObject中的成员方法&#xff08;11个&#xff09;toStringequalsclone二、Objects三、BigInteger和BigDecimaBigIntegerBigDecima四、正则表达式五、DateJDK7前时间相关类SimpleDateFormat类Calendar类JDK8新增时间相关类六、包装类一、Object 没有一个属性…