给定两个矩阵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:

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

思路:这道题就是模拟一下矩阵相乘就好了,第一个矩阵的列数等于第二个矩阵的行数,然后三个for循环即可,最里面的for循环一定是两个矩阵共同的那个,即第一个的列数和第二个的行数,思考一下会发现实际上就是这个先移动,然后再外面两层for循环移动,理清思路即可;

代码如下:

 #include<iostream>
#include<stdio.h>
using namespace std; int ans[][] = {};
int row1 , com ,col2;
struct maxtr
{
int row;
int col;
int data[][];
}juzhen[]; //写一个结构体记录一下矩阵的信息;有行数,列数和数据(二维);
int main()
{
cin>>juzhen[].row>>juzhen[].col; //输入第一个矩阵的行数和列数;
for(int i = ; i <= juzhen[].row;i++)
{
for(int j = ;j <= juzhen[].col;j++)
{
cin>>juzhen[].data[i][j]; //两个for循环输入第一个矩阵的数据;
}
} cin>>juzhen[].row>>juzhen[].col;  //输入第二个矩阵的行数和列数;
for(int i = ; i <= juzhen[].row;i++)
{
for(int j = ;j <= juzhen[].col;j++)
{
cin>>juzhen[].data[i][j]; //两个for循环输入第二个矩阵的数据;
}
}
if(juzhen[].col!=juzhen[].row) //先判断一下第一个矩阵的列数是否等于第二个矩阵的行数
{
printf("Error: %d != %d",juzhen[].col,juzhen[].row);
}
else
{ //如果第一个矩阵的列数等于第二个矩阵的行数,则记录一下新的矩阵的行数和列数,就是下面的row1和col2;
row1 = juzhen[].row;
com = juzhen[].col; //这是两个矩阵共有的,即第一个的列数和第二个的行数,将其中一个赋值即可;
col2 = juzhen[].col;
for(int i = ; i <= row1 ;i++)
{ for(int k = ; k <= col2;k++)
{
for(int j = ; j <= com ;j++) //这个共有的循环一定要放在最里面,根据矩阵的乘法可知,若实在不理解,可以自己再草稿纸上写一遍矩阵的乘法过程;
{
ans[i][k] += juzhen[].data[i][j]*juzhen[].data[j][k]; 用ans[i][k]记录新的矩阵的数据;
}
}
}
cout<<row1<<" "<<col2<<endl; for(int i = ; i <= row1 ;i++)
{
for(int j = ; j <= col2;j++)
{
cout<<ans[i][j]; //输出数据;
if(j!=col2) cout<<" "; //注意规范; }
if(i!=row1 ) cout<<endl; //注意规范
}
}
return ;
}

(原创)团体程序设计天梯赛-练习集 L1-048 矩阵A乘以B (15 分)的更多相关文章

  1. PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集

    L2-001 紧急救援 (25 分)   作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...

  2. PTA L2-023 图着色问题-前向星建图 团体程序设计天梯赛-练习集

    L2-023 图着色问题 (25 分)   图着色问题是一个著名的NP完全问题.给定无向图,,问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色? 但本题并不是要你解 ...

  3. 团体程序设计天梯赛-练习集 L1-007 念数字

    - - ->博主推荐,学生党.程序员必备,点击查看- - - >>>>> 热门文章推荐 以下50道算法编程题访问量较大,包含常用语法,数据结构,解题思路等等,作为C ...

  4. 团体程序设计天梯赛-练习集L2-010. 排座位

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

  5. 团体程序设计天梯赛-练习集L2-007. 家庭房产

    L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...

  6. PAT 团体程序设计天梯赛-练习集 L1-008. 求整数段和

    给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中-100<=A<=B<=100,其间以空格分隔. 输出格式: 首先顺序输出 ...

  7. PTA L2-002 链表去重 团体程序设计天梯赛-练习集

    L2-002 链表去重(25 分)   给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另 ...

  8. 团体程序设计天梯赛-练习集-L1-045. 宇宙无敌大招呼

    L1-045. 宇宙无敌大招呼 据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼.作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼 ...

  9. 团体程序设计天梯赛-练习集-*L1-043. 阅览室

    L1-043. 阅览室 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为不超过100 ...

随机推荐

  1. mysql高可用集群——MHA架构

    目录1.下载2.搭建mha 2.1 系统配置 2.2 架构 2.3 添加ssh公钥信任 2.4 安装mha节点 2.5 manager配置文件 2.6 检查 2.7 启动manager进程 2.8 碰 ...

  2. Java-API:javax.servlet.http.HttpServletRequest

    ylbtech-Java-API:javax.servlet.http.HttpServletRequest 1.返回顶部 1. javax.servlet.http Interface HttpSe ...

  3. 映射块设备提示rbd: sysfs write failed的解决方法

    标签(空格分隔): ceph ceph运维 rbd 问题描述: 创建完镜像foo后,映射镜像时提示下面的错误: [root@node3 ~]# rbd map testpool/foo rbd: sy ...

  4. Rails中文乱码问题【转】

    乱码情况一:netbeas控制台输出乱码 具体表现为:在程序中定义中文字符串,然后输出.但输出为乱码 解决方法:打开netbeans安装目录,找到etc目录下的netbeans.conf文件.在net ...

  5. BIOS简单设置 解析“集成显卡”内存占用问题

    很多使用集成显卡的用户会发现,在系统信息窗口中,内存容量和实际不一样.比如系统内存显示4GB,可用3.48G之类.这不可用的一部分内存到哪去了? 其实减少的这部分内存是被集成显卡占用当做显存使用了.而 ...

  6. 第二章 深入分析Java I/O的工作机制(待续)

    Java的I/O类库的基本架构 磁盘I/O工作机制 网络I/O工作机制 NIO的工作方式 I/O调优 设计模式解析之适配器模式 设计模式解析之装饰器模式 适配器模式与装饰器模式的区别

  7. List的使用1(两张表或者一张表的自身关系)

    第一,在Model中 首先,在视图Model(GZUModel)中定义一个SelectListItem集合 public List<SelectListItem> AList { get; ...

  8. 01-19asp.net网站--关于“应用程序中的服务器错误(需添加"Jquery"ScriptRescourseMapping)”

    一般打开网页进行加载时(有缓存),会弹出以下对话框. 但是如果网页加载后出现以下错误,就是应用程序的问题了.如果出现这种问题,就需要在安装Csharp的根目录下,找到一个名为.dll结尾的Jquery ...

  9. 问题:Server.MapPath;结果:Server.MapPath的命名空间

    习惯用Access的朋友都知道:ADO.NET链接Access数据库经常这么写:strcon="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&q ...

  10. LAMP 2.4 Apache访问控制

    通过查看日志发现有个IP 恶意攻击你的网址,可以控制这个IP的访问. 打开主配置文件复制模板. vim /usr/local/apache2/conf/httpd.conf 搜索 /Order 复制 ...