c++实现矩阵乘法关系矩阵乘法
题目如图
(这里都默认能够进行矩阵乘法运算)这两个题目都主要考察矩阵乘法的运算方式,较为简单。两个矩阵能够相乘的条件是第一个矩阵的列数和第二个矩阵的行数相同,例如A矩阵为3行2列,B矩阵为2行3列,则AB两个矩阵可以相乘,并且得到的矩阵为3行3列,同理若A为3行3列,B为3行2列,则得到的矩阵为3行2列
如果A矩阵为2行3列,B矩阵为2行2列,则AB两矩阵无法相乘。
在确定最终矩阵的行列数后,其第n行第m列的数就为A矩阵第n行与B矩阵第m列的数一一对应相乘后再相加的和。
这步操作可以用如下代码表示
for(int i=0;i<m;i++){for(int j=0;j<n;j++){for(int k=0;k<p;k++){ans[i][j] += R1[i][k]*R2[k][j];}}
}
第一题的代码如下
#include<iostream>
using namespace std;
const int N=105;
int R1[N][N],R2[N][N],ans[N][N];int main(){int m,p,n;cin>>m>>p>>n;for(int i=0;i<m;i++){//录入第一个矩阵for(int j=0;j<p;j++){cin>>R1[i][j];}}for(int i=0;i<p;i++){//录入第二个矩阵for(int j=0;j<n;j++){cin>>R2[i][j];}}for(int i=0;i<m;i++){//两个矩阵相乘for(int j=0;j<n;j++){for(int k=0;k<p;k++){ans[i][j] += R1[i][k]*R2[k][j];}}}for(int i=0;i<m;i++){//输出最终矩阵for(int j=0;j<n;j++){cout<<ans[i][j]<<" ";}cout<<endl;}return 0;
}
第二个问题是离散数学中的关系矩阵问题,设关系矩阵为R1: 1 0 1 R2: 1 0 1
1 0 1 0 1 1
0 1 0 1 0 0
则根据公式运算方法为
1∧1 ∨ 0∧0 ∨ 1∧1 1∧0 ∨ 0∧1 ∨ 1∧0 1∧1 ∨ 0∧1 ∨ 1∧0
1∧1 ∨ 0∧0 ∨ 1∧1 1∧0 ∨ 0∧1 ∨ 1∧0 1∧1 ∨ 0∧1 ∨ 1∧0
0∧1 ∨ 1∧0 ∨ 0∧1 0∧0 ∨ 1∧ 1 ∨ 0∧0 0∧1∨ 1∧1 ∨ 0∧0
因为数据量较小,我们还可以采用如下方法;观察到两数合取时只有都为1时,结果为1,其余为0,与矩阵乘法类似;而每项数据之间又是合取,所以只要
经过矩阵乘法后得到结果大于等于1,说明该项为1,否则为0,按此思路,只需在第一题的基础上加上判断即可,如下
if(ans[i][j]==0) ans[i][j]=0;
else ans[i][j]=1;
完整代码如下:
#include<iostream>
using namespace std;
const int N=105;
int R1[N][N],R2[N][N];
int ans[N][N];
int main(){int a,b,c;cin>>a>>b>>c;for(int i=0;i<a;i++){for(int j=0;j<b;j++){cin>>R1[i][j];}} for(int i=0;i<b;i++){for(int j=0;j<c;j++){cin>>R2[i][j];}} for(int i=0;i<a;i++){for(int j=0;j<c;j++){for(int k=0;k<b;k++){ans[i][j]+=R1[i][k]*R2[k][j]; }if(ans[i][j]==0) ans[i][j]=0;else ans[i][j]=1;}} for(int i=0;i<a;i++){for(int j=0;j<c;j++){cout<<ans[i][j]<<' ';}cout<<endl;}return 0;
}
c++实现矩阵乘法关系矩阵乘法相关推荐
- 离散数学·(不调用第三方库)普通矩阵乘积/关系矩阵乘积,理论+python代码实现
矩阵乘法如何计算? 普通矩阵乘法:第一个矩阵的列数等于第二个矩阵的行数. 矩阵关系运算前提: (1)第一个矩阵的列数等于第二个矩阵的行数. (2)两个矩阵的元素均是0或1. 这里以关系矩阵乘法为例: ...
- matlab中的矩阵点乘(.*)和乘法(*)
matlab中的矩阵点乘(.)和乘法() 矩阵的乘法 矩阵相乘行和列的关系必须满足:矩阵A*矩阵B,矩阵A的列数等于矩阵B的行数,方法是矩阵A每一行与矩阵B的对应列的数据相乘再相加,得到的值作为新的矩 ...
- 【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )
文章目录 颜色模式 颜色通道 Android 中的颜色矩阵 矩阵乘法运算 滤镜中的矩阵乘法运算 矩阵加法运算 滤镜中的矩阵乘法运算 滤镜运算原理 ( 总结 ) 实际滤镜理论示例 颜色模式 颜色模式 : ...
- 疯子的算法总结(五) 矩阵乘法 (矩阵快速幂)
学过线性代数的都知道矩阵的乘法,矩阵乘法条件第为一个矩阵的行数等与第二个矩阵的列数,乘法为第一个矩阵的第一行乘以第二个矩阵的第一列的对应元素的和作为结果矩阵的第一行第一列的元素.(详解参见线性代数) ...
- Vijos 1603 ----迷宫(矩阵乘法,矩阵快速幂)
描述 在某个神秘的星球上有一个游乐园 游乐园里有一个奇怪的迷宫,迷宫内有n个点,每个点之间都可能会有一条有向边(可能会有自环) 现在游乐园主有个问题想请你帮忙: 问:从s点走到f点,恰好走过m条边(边 ...
- 矩阵问题入门(矩阵乘法and矩阵快速幂)acm寒假集训日记22/1/15
今天凌晨3点才睡,没想到通过看小说抑制玩游戏,反而看小说的时间更长. u1s1:那小说太刺激了,晚上看很有感觉,风吹草动我就会猛地看过去(类似茄子说柜子动了,哈哈),真TM(语气词)练胆量!!!..Q ...
- lu分解法matlab_MIT 18.065—机器学习中的矩阵方法02 矩阵乘法与矩阵分解
数据分析.信号处理和机器学习中的矩阵方法 第02讲 矩阵乘法与矩阵分解 新MIT 线性代数|机器学习(中英机翻字幕)18.065 by Gilbert Strang_哔哩哔哩 (゜-゜)つロ 干杯~- ...
- 离散数学16__矩阵的加法、乘法
常见的矩阵有 4*4 一 矩阵的加法,就是一个矩阵的第几行第几列,与 另一个矩阵相同的第几行第几列,相加. 也就是说,矩阵相加是相同位置加一下. 得到一个新矩阵. 二 矩阵的乘法 这里以矩阵的平方 ...
- Java实现矩阵运算——矩阵乘法、矩阵转置、自动填充矩阵行
在做大数据或人工智能开发的过程做难免会遇到矩阵运算,本文在这里给大家实现一个简单的矩阵运算,请看下代码: package test;/*** 矩阵运算* * @author Administrator ...
- strassen矩阵乘法 java_矩阵乘法Strassen算法
矩阵乘法是种极其耗时的运算.以 为例,其中 和 都是 矩阵.根据矩阵乘法的定义, 中的每个元素需要按照如下方式计算 式(4.8)包含一个 次的循环,因此计算 的时间复杂度为 .而 共有 个元素,因此总 ...
最新文章
- ffmpeg architecture(上)
- IE浏览器里无法运行脚本(script)常见的解决方法!
- 为什么爬虫用python不用java_为什么常用Python,Java做爬虫,而不是C#C++等
- 开源/免费界面自动化测试工具对比研究
- GDAL2.x与1.x的主要变化比较(以C++为例说明)
- 中期蒙混过关,后期要早点起步4.13-4.19
- pb 哪里找到系统图标_建议收藏的7个高质量图标网站,一网打尽图标素材
- 自动化运维工具ansible简介
- html判断安装没安装qq,QQ提示安装路径无效您没有权限怎么办 QQ2015提示安装路径无效您没有权限的解决方法...
- LCD1602的学习与理解
- mysql error 1148_MYSQL:ERROR 1148: The used command is not allowed with this MySQL version
- fedora16上搭建lxr-1.2.0
- 用优盘装系统看不到计算机本身的硬盘,给电脑装系统!的时候找不到硬盘只能看到u盘数据我怀疑硬盘坏了主机? 爱问知识人...
- Python趣用—配平化学方程式
- APP下载链接在微信被屏蔽了 无法打开的解决方案
- HDU 1874 畅通工程续 Floyd
- 【python】计算机视觉~舌象图片中舌体倾斜判别(四)
- MySQL数据库-设置数据完整性
- 【NOIP2017】Day4
- Java Debug Interface(JDI)介绍和使用JDI调试程序