华为机试HJ69:矩阵乘法

简介: 华为机试HJ69:矩阵乘法

题目描述:

如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的

矩阵的大小不超过100*100

输入描述:

输入包含多组数据,每组数据包含:

第一行包含一个正整数x,代表第一个矩阵的行数

第二行包含一个正整数y,代表第一个矩阵的列数和第二个矩阵的行数

第三行包含一个正整数z,代表第二个矩阵的列数

之后x行,每行y个整数,代表第一个矩阵的值

之后y行,每行z个整数,代表第二个矩阵的值

输出描述:

对于每组输入数据,输出x行,每行z个整数,代表两个矩阵相乘的结果

示例:

输入:

2

3

2

1 2 3

3 2 1

1 2

2 1

3 3


输出:

14 13

10 11


说明:

1 2 3

3 2 1

乘以

1 2

2 1

3 3

等于

14 13

10 11


解题思路:

本题是通过数组实现矩阵计算。按照给定的行列分别定义好A和B两个矩阵的尺寸,并完成赋值;用过calcMatrix函数实现矩阵相乘,每个位置的值是A对应行和B对应列进行点乘的结果,完毕。

测试代码:

#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> calcMatrix(vector<vector<int>> A,vector<vector<int>> B,int row,int col)
{
    vector<vector<int>> R(row,vector<int>(col,0));
    for(int i=0;i<row;++i)
    {
        for(int j=0;j<col;++j)
        {
            int sum=0;
            for(int m=0,n=0;m<A[i].size(),n<B.size();++m,++n)
            {
                sum+=A[i][m]*B[n][j];
            }
            R[i][j]=sum;
        }
    }
    return R;
}
int main()
{
    int row1,col1,row2,col2;
    while(cin>>row1>>col1>>col2)
    {
        row2=col1;
        vector<vector<int>> A(row1,vector<int>(col1,0));
        vector<vector<int>> B(row2,vector<int>(col2,0));
        for(int i=0;i<row1;++i)
        {
            for(int j=0;j<col1;++j)
            {
                cin>>A[i][j];
            }
        }
        for(int i=0;i<row2;++i)
        {
            for(int j=0;j<col2;++j)
            {
                cin>>B[i][j];
            }
        }
        vector<vector<int>> result=calcMatrix(A,B,row1,col2);
        for(int i=0;i<row1;++i)
        {
            for(int j=0;j<col2;++j)
            {
                cout<<result[i][j]<<" ";
            }
            cout<<endl;
        }
    }
    return 0;
}


相关文章
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
ModernBERT:英伟达开源的新一代编码器模型,性能超越 SOTA,通过去除填充和序列打包减少计算浪费,提高训练和推理的效率
ModernBERT 是由英伟达和 HuggingFace 等机构联合开源的新一代编码器模型,支持长上下文处理,性能超越 SOTA,适合多种自然语言处理任务。
337 7
ModernBERT:英伟达开源的新一代编码器模型,性能超越 SOTA,通过去除填充和序列打包减少计算浪费,提高训练和推理的效率
|
10月前
|
机器学习/深度学习 人工智能 PyTorch
HelloMeme:开源的面部表情与姿态迁移框架,将视频中的人物表情迁移到静态图像中生成动态视频
HelloMeme 是一个基于 Stable Diffusion 1.5 模型的面部表情与姿态迁移框架,通过集成空间编织注意力机制,实现了自然且物理合理的表情包视频生成。该框架具有强大的泛化能力和扩展性,适用于多种应用场景。
320 77
HelloMeme:开源的面部表情与姿态迁移框架,将视频中的人物表情迁移到静态图像中生成动态视频
|
7月前
|
运维 安全 弹性计算
基于阿里云的开源应用智能管理架构设计与工程实践
本文以Websoft9技术方案为例,探讨企业级应用管理的范式。通过解析开源应用管理面临的部署复杂性、运维低效性和知识碎片化三大挑战,提出基于阿里云的三层架构:智能应用管理门户、核心功能层和基础设施层。文章详细阐述了应用编排标准化(IaC实践)、智能运维体系构建及知识资产数字化的技术实现路径,并结合金融与制造行业的案例,展示解决方案的实际效果。最后提供开发者资源与工具链支持,助力企业高效管理应用。
243 1
|
11月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
383 77
|
8月前
|
机器学习/深度学习 自然语言处理
RWKV-7 2.9B 开源发布!纯 RNN 无 KV cache,支持世界所有语言
RWKV-7 2.9B 开源发布!纯 RNN 无 KV cache,支持世界所有语言
226 0
|
机器学习/深度学习 缓存 算法
深度学习之代码优化
基于深度学习的代码优化是一种使用深度学习技术来提升编程代码性能、减少运行时间或资源消耗的方式。通过模型学习大量代码的特征和结构,深度学习可以帮助自动化地识别和应用优化策略。
216 4
|
机器学习/深度学习 人工智能 自然语言处理
软件测试的未来趋势:AI与自动化的融合
随着技术的不断进步,软件测试领域正迎来一场革命。本文将探讨人工智能(AI)和自动化技术如何共同推动软件测试的发展,提高测试效率,减少人为错误,并预测未来的发展趋势。通过分析当前市场上流行的测试工具和方法,以及它们如何整合AI和自动化技术,我们将揭示这一领域即将迎来的变革。
485 29
|
SQL 分布式计算 大数据
"揭秘MaxCompute大数据秘术:如何用切片技术在数据海洋中精准打捞?"
【8月更文挑战第20天】在大数据领域,MaxCompute(曾名ODPS)作为阿里集团自主研发的服务,提供强大、可靠且易用的大数据处理平台。数据切片是其提升处理效率的关键技术之一,它通过将数据集分割为小块来优化处理流程。使用MaxCompute进行切片可显著提高查询性能、支持并行处理、简化数据管理并增强灵活性。例如,可通过SQL按时间或其他维度对数据进行切片。此外,MaxCompute还支持高级切片技术如分区表和分桶表等,进一步加速数据处理速度。掌握这些技术有助于高效应对大数据挑战。
360 0
|
安全 算法 网络安全
案例 | 防火墙华为与Fortine对接,以ISAKMP方式建立IPSec隧道。
案例 | 防火墙华为与Fortine对接,以ISAKMP方式建立IPSec隧道。
224 0