前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >L1-048 矩阵A乘以B (15 分)

L1-048 矩阵A乘以B (15 分)

作者头像
Lokinli
发布于 2023-03-09 11:39:40
发布于 2023-03-09 11:39:40
36400
代码可运行
举报
文章被收录于专栏:以终为始以终为始
运行总次数:0
代码可运行

L1-048 矩阵A乘以B (15 分)

给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有R​a​​行、C​a​​列,B有R​b​​行、C​b​​列,则只有C​a​​与R​b​​相等时,两个矩阵才能相乘。

输入格式:

输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过100。

输出格式:

若输入的两个矩阵的规模是匹配的,则按照输入的格式输出乘积矩阵AB,否则输出Error: Ca != Rb,其中Ca是A的列数,Rb是B的行数。

输入样例1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2 3
1 2 3
4 5 6
3 4
7 8 9 0
-1 -2 -3 -4
5 6 7 8

输出样例1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2 4
20 22 24 16
53 58 63 28

输入样例2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
3 2
38 26
43 -5
0 17
3 2
-11 57
99 68
81 72

输出样例2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error: 2 != 3
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <bits/stdc++.h>
using namespace std;
const int maxn = 200;
int x[maxn][maxn];
int y[maxn][maxn];
int z[maxn][maxn];
int main()
{
    int n,m,a,b;
    cin >> n >> m;
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j <= m; j ++)
        {
            scanf("%d", &x[i][j]);
        }
    }
    cin >> a >> b;
    for(int i = 1; i <= a; i ++)
    {
        for(int j = 1; j <= b; j ++)
        {
            scanf("%d", &y[i][j]);
        }
    }
    memset(z,0,sizeof(z));
    if(m != a)
    {
        printf("Error: %d != %d\n", m, a);
    }
    else if(m == a)
    {
        for(int i = 1; i <= n; i ++)
        {
            for(int k = 1; k <= b; k ++)
            {
                int sum = 0;
                for(int j = 1; j <= m; j ++)
                {
                    sum += x[i][j] * y[j][k];
                }
                z[i][k] = sum;
            }
        }
        printf("%d %d\n",n,b);
        for(int i = 1; i <= n; i ++)
        {
            for(int j = 1; j <= b; j ++)
            {
                if(j == 1) printf("%d",z[i][j]);
                else printf(" %d",z[i][j]);
            }
            printf("\n");
        }
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2017年天梯赛全国总决赛题集 L1-8 矩阵A乘以B
给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra行、C​a列,B有R​b行、Cb ​​ 列,则只有Ca与Rb相等时,两个矩阵才能相乘。
C you again 的博客
2020/09/15
2320
【2020HBU天梯赛训练】7-8 矩阵A乘以B
给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有R​a​​行、C​a​​列,B有R​b​​行、C​b​​列,则只有C​a​​与R​b​​相等时,两个矩阵才能相乘。
韩旭051
2020/06/23
6270
2015年第六届蓝桥杯C/C++B组省赛题目解析
一、奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。 请提交该数字(一个整数),不要写任何多余的内容或说明性文字。 分析:直接枚举10000-99999之间的数字,如果带4,直接排除;不带4的,记录一次,直到枚举完后输出。 #include <iostream> usi
Zoctopus
2018/06/04
8660
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解
“一只青蛙一张嘴,两只眼睛四条腿。两只青蛙两张嘴,四只眼睛八条腿。三只青蛙三张嘴,六只眼睛十二条腿。……二十只青蛙二十张嘴,四十只眼睛八十条腿。”
Designer 小郑
2023/08/01
2720
【未完成】1068 万绿丛中一点红 (20 分)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
韩旭051
2019/11/08
2840
2018 团队设计天梯赛题解---华山论剑组
2018 年度的团队设计天梯赛前几天结束了。但是成绩真的是惨不忍睹。。。毕竟是团队的比赛,如果团队平均水平不高的话,单凭一个人,分再高也很难拉起来(当然,一个人能单挑一个队的大神除外)。
指点
2019/01/18
2.7K0
“今天开火车了吗?”——ICPC World Final 队伍的独特训练方法?
总是能听到总决赛的选手们会时常讨论“今天开火车了吗?”,这到底是什么神奇的东西。难道是总决赛队伍所拥有的不为人知的独特训练方法吗?
ACM算法日常
2021/10/18
1.1K0
P1141 01迷宫
题目描述 有一个仅由数字0与1组成的n×n格迷宫。若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上。 你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。 输入输出格式 输入格式: 输入的第1行为两个正整数n,m。 下面n行,每行n个字符,字符只可能是0或者1,字符之间没有空格。 接下来m行,每行2个用空格分隔的正整数i,j,对应了迷宫中第i行第j列的一个格子,询问从这一格开始能移动到多少格。 输出格式
attack
2018/04/13
1K0
程序员进阶之算法练习(六十二)AK练习
题目链接 题目大意: 小明有a个1元硬币,b个2元硬币; 小明想要购买一个商品,并且不想找零; 现在小明想知道自己无法给到最低价格是多少;
落影
2022/06/05
5210
【算法/题目训练】:贪心练习
🔥 之前在这篇文章里 【算法/训练】:贪心(算法理论学习及实践) 讲了贪心的知识,以及对于其的练习,这里的话我们就纯练习题目了,也是对之前的文章的补充,以后有关于贪心算法的题目也基本会放到这篇博客里面的
IsLand1314
2025/02/12
760
【算法/题目训练】:贪心练习
【GPLT】L1-048 矩阵A乘以B
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
6670
C++上机考试试题解析
C++上机考试试题解析 0x1 求日期是该年的第几天 输入日期(年、月、日),输出它是该年的第几天。 Input year, month, day:1981 3 1 判断闰年方法:a%4==0&&a%100!=0||a%400==0 #include<iostream> using namespace std; int main() { cout<<"Input year, month, day:"; int a,b,c,temp=0; int days,i; cin>>a
慕白
2018/07/06
6.1K0
数论-快速幂、矩阵快速幂、慢速乘
慢速乘,顾名思义,之所以慢是因为把乘法拆成了若干次加法运算,但是我们可以在每次加法时对中间结果进行取模,所以可以防止大数相乘溢出,其原理同快速幂,不再赘述。
唔仄lo咚锵
2022/05/08
3910
数论-快速幂、矩阵快速幂、慢速乘
756. 蛇形矩阵 (偏移量应用)
原题链接 描述:输入两个整数 n 和 m,输出一个 n 行 m 列的矩阵,将数字 1 到 n×m 按照回字蛇形填充至矩阵中。
浪漫主义狗
2022/07/11
5220
756. 蛇形矩阵 (偏移量应用)
Archived | 307-09-矩阵
定义矩阵A,B,其中A的大小为a \times b,B的大小为b \times c,对于矩阵C=AB中的每一个元素C(i.j),~i\in [1, a],~j\in [1,c],存在以下:
gyro永不抽风
2021/05/21
6120
2018年第九届蓝桥杯B组题解
按着题目把这些数转换成8字节的二进制数就可以了,负数的二进制是补码。可以自己写个函数实现一下,实际效果图:
Ch_Zaqdt
2019/01/10
2.9K0
L2-013 红色警报 (25 分)
战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。
Lokinli
2023/03/09
2150
动态规划-RMQ问题(ST算法)
RMQ(Range Minimum/Maximum Query)问题,是求区间最大值或最小值,即范围最值问题。暴力解法是对每个询问区间循环求解,设区间长度 ,询问次数 ,则复杂度是 。一般还可以使用线段树求解,复杂度是 。但还有一种更简便的ST算法,预处理复杂度是 ,查询 。
唔仄lo咚锵
2021/12/31
8060
基础练习 矩阵乘法
  给定一个N阶矩阵A,输出A的M次幂(M是非负整数)   例如:   A =   1 2   3 4   A的2次幂   7 10   15 22
刘开心_1266679
2019/02/14
8610
记忆化搜索专题
大家好,又见面了,我是你们的朋友全栈君。   什么是记忆化搜索呢?搜索的低效在于没有能够很好地处理重叠子问题;动态规划虽然比较好地处理了重叠子问题,但是在有些拓扑关系比较复杂的题目面前,又显得无奈。记忆化搜索正是在这样的情况下产生的,它采用搜索的形式和动态规划中递推的思想将这两种方法有机地综合在一起,扬长避短,简单实用,在信息学中有着重要的作用。   用一个公式简单地说:记忆化搜索=搜索的形式+动态规划的思想。   动态规划:就是一个最优化问题,先将问题分解为子问题,并且对于这些分解的子问题自身就是最优的才能在这个基础上得出我们要解决的问题的最优方案,要不然的话就能找到一个更优的解来替代这个解,得出新的最优自问题,这当然是和前提是矛盾的。动态规划不同于 贪心算法,因为贪心算法是从局部最优来解决问题,而动态规划是全局最优的。用动态规划的时候不可能在子问题还没有得到最优解的情况下就做出决策,而是必须等待子问题得到了最优解之后才对当下的情况做出决策,所以往往动态规划都可以用 一个或多个递归式来描述。而贪心算法却是先做出一个决策,然后在去解决子问题。这就是贪心和动态规划的不同。 一般遇到一个动态规划类型的问题,都先要确定最优子结构,还有重叠子问题,这两个是动态规划最大的特征,然后就是要写 动态规划的状态方程,这个步骤十分十分的重要的,写动归方程是需要一定的经验的,这可以通过训练来达到目的。接着就是要自底向上的求解问题的,先将最小规模的子问题的最优解求出,一般都用一张表来记录下求得的解,到后来遇到同样的子问题的时候就可以直接查表得到答案,最后就是通过一步一步的迭代得出最后问题的答案了。 我的理解最重要的东西就是一定会要一个数组或者其他的存储结构存储得到的子问题的解。这样就可以省很多时间,也就是典型的空间换时间 动态规划的一种变形就是记忆化搜索,就是根据动归方程写出递归式,然后在函数的开头直接返回以前计算过的结果,当然这样做也需要一个存储结构记下前面计算过的结果,所以又称为记忆化搜索。 记忆化搜索递归式动态规划 1.记忆化搜索的思想 记忆化搜索的思想是,在搜索过程中,会有很多重复计算,如果我们能记录一些状态的答案,就可以减少重复搜索量 2、记忆化搜索的适用范围 根据记忆化搜索的思想,它是解决重复计算,而不是重复生成,也就是说,这些搜索必须是在搜索扩展路径的过程中分步计算的题目,也就是“搜索答案与路径相关”的题目,而不能是搜索一个路径之后才能进行计算的题目,必须要分步计算,并且搜索过程中,一个搜索结果必须可以建立在同类型问题的结果上,也就是类似于动态规划解决的那种。 也就是说,他的问题表达,不是单纯生成一个走步方案,而是生成一个走步方案的代价等,而且每走一步,在搜索树/图中生成一个新状态,都可以精确计算出到此为止的费用,也就是,可以分步计算,这样才可以套用已经得到的答案 3、记忆化搜索的核心实现 a. 首先,要通过一个表记录已经存储下的搜索结果,一般用哈希表实现 b.状态表示,由于是要用哈希表实现,所以状态最好可以用数字表示,常用的方法是把一个状态连写成一个p进制数字,然后把这个数字对应的十进制数字作为状态 c.在每一状态搜索的开始,高效的使用哈希表搜索这个状态是否出现过,如果已经做过,直接调用答案,回溯 d.如果没有,则按正常方法搜索 4、记忆化搜索是类似于动态规划的,不同的是,它是倒做的“递归式动态规划”。
全栈程序员站长
2022/09/19
6970
记忆化搜索专题
相关推荐
2017年天梯赛全国总决赛题集 L1-8 矩阵A乘以B
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验