
PTA_L1-048 矩阵A乘以B (15分)
输入矩阵:首先读取第一个矩阵A的行数和列数,随后读取其Elements。接着读取第二个矩阵B的行数和列数及其Elements。 验证尺寸:检查矩阵A的列数是否与矩阵B的行数相等。尺寸不匹配时,直接返回错误信息。 执行矩阵乘法:初始化结果矩阵,逐个计算每个元素,该元素等于矩阵A的一行与矩阵B的一列元素的点积。 输出结果:按照指定的格式输出结果矩阵。
发布日期:2021-05-14 16:34:33
浏览次数:21
分类:精选文章
本文共 1706 字,大约阅读时间需要 5 分钟。
矩阵乘法是一个常见的线性代数操作,结果阵的元素由原两矩阵的元素按指定规则相乘并求和得到。要执行矩阵相乘,首先必须验证两个矩阵的列数和行数是否匹配,即左边矩阵的列数是否等于右边矩阵的行数。
输入格式
给定两个矩阵A和B,格式如下:
- 每行先给出矩阵的行数和列数。
- 然后依次给出R行的数值,每行包括C个整数,用空格分隔。
输出格式
如果两矩阵的尺寸匹配,返回它们的乘积矩阵AB;否则返回错误信息:“错误:Ca != Rb”,其中Ca是A的列数,Rb是B的行数。
解题思路
实现代码
#include#include using namespace std;int main() { vector > a, b, product; int Ra, Ca, Rb, Cb; // Read matrix a cin >> Ra >> Ca; for (int i = 0; i < Ra; ++i) { a.push_back(vector (Ca)); for (int j = 0; j < Ca; ++j) { cin >> a[i][j]; } } // Read matrix b cin >> Rb >> Cb; for (int i = 0; i < Rb; ++i) { b.push_back(vector (Cb)); for (int j = 0; j < Cb; ++j) { cin >> b[i][j]; } } // Check if multiplication is possible if (Ca != Rb) { printf("Error: %d != %d\n", Ca, Rb); return; } // Compute the product matrix product.resize(Ra, vector (Cb)); for (int i = 0; i < Ra; ++i) { for (int j = 0; j < Cb; ++j) { int sum = 0; for (int k = 0; k < Ca; ++k) { sum += a[i][k] * b[k][j]; } product[i][j] = sum; } } // Output the product matrix cout << Ra << ' ' << Cb << endl; for (int i = 0; i < Ra; ++i) { cout << product[i][0]; for (int j = 1; j < Cb; ++j) { cout << ' ' << product[i][j]; } cout << endl; } return 0; }
代码解释
- 读取输入:首先读取矩阵的尺寸,并将每个矩阵存储为二维向量。
- 尺寸检查:检查两矩阵是否可乘,尺寸不匹配时输出错误信息并退出。
- 进行矩阵乘法:逐个计算每个结果元素,利用三重循环实现点积计算。
- 输出结果:按照格式输出结果矩阵,确保每一行正确显示结果元素。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月20日 03时49分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
海思SDK mkimage command not found
2019-03-12
QT5 退出窗口
2019-03-12
ov9732 datasheet
2019-03-12
rk3399平台gt9xx触摸屏驱动分析
2019-03-12
高通8953烧录之后报ERROR: UFDT apply overlay failed
2019-03-12
X工厂 ERP (SBO) 2006 项目案例
2019-03-12
Android 吸顶布局
2019-03-12
Jquery获取td下的div下的b标签中内容
2019-03-12
python学习笔记2.3- 循环、判断
2019-03-12
python学习笔记4.1-python高级之生成器
2019-03-12
python学习笔记6.3-类的属性函数(@property)
2019-03-12
U3D实现WebCamera显示
2019-03-12
python爬虫实战:爬取天气数据的实例详解
2019-03-12
方法的重载
2019-03-12
SpringCloud第七章Ribbon负载均衡服务调用
2019-03-12
Python我的模块-字符替换
2019-03-12
"cannot be resolved or is not a field"问题解决
2019-03-12
serialVersionUID作用
2019-03-12
Android Eclipse svn插件安装说明
2019-03-12