CSP-202305-2-矩阵运算

CSP-202305-2-矩阵运算:题目链接

知识点一:申请矩阵

1.动态分配

// 申请
int** dynamicArray = new int*[rows];
for (int i = 0; i < rows; ++i) {dynamicArray[i] = new int[cols];
}// 释放
for (int i = 0; i < rows; ++i) {delete[] dynamicArray[i];
}
delete[] dynamicArray;

2.静态分配

const int N = 10010, D = 30;
int Array[N][D];

知识点二:矩阵乘法

void matrixMultiplication(long long** A, int rowsA, int colsA, long long** B, int rowsB, int colsB, long long** result) {for (int i = 0; i < rowsA; ++i) {for (int j = 0; j < colsB; ++j) {result[i][j] = 0;for (int k = 0; k < colsA; ++k) {result[i][j] += A[i][k] * B[k][j];}}}
}

难点

1.时间复杂度

  • 若直接按照原题给出的(W⋅(Q×KT))×V计算,由于Q×KT的结果为3*3的矩阵,会显示超时,进而需要改变矩阵的计算顺序,所以要先计算KT*V(结果为2*2)的矩阵,可以通过。

2.long long替换int

  • 防止由于个别数字的大小超过int的范围。

代码

#include <iostream>
using namespace std;void matrixMultiplication(long long** A, int rowsA, int colsA, long long** B, int rowsB, int colsB, long long** result) {for (int i = 0; i < rowsA; ++i) {for (int j = 0; j < colsB; ++j) {result[i][j] = 0;for (int k = 0; k < colsA; ++k) {result[i][j] += A[i][k] * B[k][j];}}}
}int main() {int row, col;cin >> row >> col;// 动态分配二维数组long long** Q = new long long* [row];long long** K_T = new long long* [col];long long** V = new long long* [row];long long** W = new long long* [1];for (int i = 0; i < row; i++) {Q[i] = new long long[col];V[i] = new long long[col];}for (int i = 0; i < col; i++){K_T[i] = new long long[row];}for (int i = 0; i < 1; i++){W[i] = new long long[row];}// 输入for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){cin >> Q[i][j];}}for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){cin >> K_T[j][i];}}for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){cin >> V[i][j];}}for (int i = 0; i < row; i++){cin >> W[0][i];}// result1 = K_T * V (2*3 * 3*2 = 2*2)long long** result1 = new long long* [col];for (int i = 0; i < col; i++){result1[i] = new long long[col];}matrixMultiplication(K_T, col, row, V, row, col, result1);// result2 = Q * result1long long** result2 = new long long* [row];for (int i = 0; i < row; i++){result2[i] = new long long[col];}matrixMultiplication(Q, row, col, result1, col, col, result2);// result2 *= Wfor (int i = 0; i < row; i++){for (int j = 0; j < col; j++){result2[i][j] = W[0][i] * result2[i][j];}}// 输出for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){cout << result2[i][j] << " ";}cout << endl;}// 释放动态分配的内存for (int i = 0; i < row; i++) {delete[] Q[i];delete[] V[i];delete[] result2[i];}for (int i = 0; i < col; i++) {delete[] K_T[i];delete[] result1[i];}delete[] Q;delete[] K_T;delete[] V;delete[] W[0]; delete[] W;delete[] result2;delete[] result1;return 0;
}

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有哪些流行的中文开源语言模型?

支持中文的流行开源语言模型有很多&#xff0c;这些模型在自然语言处理领域的中文任务上表现出色&#xff0c;包括文本分类、情感分析、机器翻译、问答系统等。以下是一些支持中文的流行开源语言模型&#xff1a; 1. **BERT-Base, Chinese**&#xff1a;Google发布的BERT模型的…

【Linux】【Shell】常用压缩和解压缩命令(超详细)

目录 1. 指令&#xff1a; 1.1 tar 1.2 gz、.tar.gz 1.3 .bz2、.tar.bz2、.bz 1.4 .z、.tar.z 1.5 .zip 1.6 .rar 1.7 lzop 2. 示例&#xff1a; 1. 指令&#xff1a; 快速压缩&#xff1a;XZ_DEFAULTS"-T0" tar cJvf xxxxx.tar.xz sourcefile&#xff08;压…

解决浏览器端 globalThis is not defined 报错

解决浏览器端 globalThis is not defined 报错 前言解决办法&#xff1a; 前言 在使用低版本火狐浏览器出现报错globalThis is not defined 解决办法&#xff1a; 在vue的index.html 中添加 this.globalThis || (this.globalThis this) <head><script>this.g…

Power BI无法加载模型无法加载与此报表关联的模型架构。请确保已连接服务器,然后重试。这是可能遇到什么问题了

在Power BI中遇到“无法加载与此报表关联的模型架构。请确保已连接服务器&#xff0c;然后重试。”这样的错误信息&#xff0c;通常意味着模型的数据源有问题&#xff0c;或者模型与报表之间的连接存在问题。以下是一些可能的解决方案&#xff1a; 检查数据源连接&#xff1a; …

Lambda表达式(匿名函数)

C11中引入了lambda表达式&#xff0c;定义匿名的内联函数。 我们可以直接原地定义函数而不用再跑到外面去定义函数跳来跳去。 同时在stl的排序上也有作用。 [capture] (parameters) mutable ->return-type {statement}下面逐一介绍各个参数的含义. [capture] : 捕获&#…

Java语法学习线程基础

Java语法学习线程基础 大纲 概念创建线程线程终止常用方法用户线程和守护线程线程的七大状态线程的同步互斥锁线程死锁释放锁 具体案例 1.概念 2. 创建线程 第一种&#xff1a; class Cat extends Thread {int time 0;Overridepublic void run() {while (true) {System.o…

重写Sylar基于协程的服务器(5、IO协程调度模块的设计)

重写Sylar基于协程的服务器&#xff08;5、IO协程调度模块的设计&#xff09; 重写Sylar基于协程的服务器系列&#xff1a; 重写Sylar基于协程的服务器&#xff08;0、搭建开发环境以及项目框架 || 下载编译简化版Sylar&#xff09; 重写Sylar基于协程的服务器&#xff08;1、…

C++设计模式-单一职责原则

单一职责原则定义了类的封装规范。&#xff08;封装、继承、多态&#xff09; 定义&#xff1a;有且仅有一个引起类变化的原因。 e.g.1.一个需要重新封装的类 class A { public:void funName() {}void funSex() {}void funAge() {}void funCourse() {}//要重新封装到其他类v…

红日靶场1搭建渗透

环境搭建 下载好镜像文件并解压&#xff0c;启动vmware 这里我用自己的win7 sp1虚拟机作为攻击机&#xff0c;设置为双网卡NAT&#xff0c;vm2 其中用ipconfig查看攻击机ip地址 设置win7 x64为双网卡&#xff0c;vm1&#xff0c;vm2 设置win08单网卡vm1&#xff0c;win2k3为单…

关于python依赖包的问题(番外)

前言: 经常一个项目写完,需要导出他所有的依赖包到另外一个项目里面,那么怎么进行操作呢? 正文: 到处依赖包文件: 在一个Python项目中使用pip freeze > requirements.txt命令是一种常用方式&#xff0c;用以生成一个包含所有已安装Python依赖包及其对应版本的列表文件。…

jupyter notebook更改工作目录的2个细节

详细步骤参考知乎原文&#xff1a; 如何更改Jupyter Notebook的默认工作路径&#xff1f; - 知乎 (zhihu.com​​​​​​) 步骤4中需要删除 #符号和后面的空格&#xff01;一定要删除空格&#xff0c;否则会出现语法错误的报错 步骤5中&#xff0c;经过评论区提醒后&#xf…

蓝桥杯备战——12.PCF8591芯片的使用

目录 1.芯片简介2.读写时序3.控制字4.代码封装库5.原理图分析6.使用示例 1.芯片简介 截取自NXP的PCF8591芯片数据手册&#xff0c;我把重点关注部分划出来了&#xff0c;请务必自行阅读一遍数据手册&#xff01; 2.读写时序 ①器件地址&#xff1a; Bit0决定是读还是写操作&…

Python 数据分析(PYDA)第三版(七)

原文&#xff1a;wesmckinney.com/book/ 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 附录 附录 A&#xff1a;高级 NumPy 原文&#xff1a;wesmckinney.com/book/advanced-numpy 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 此开放访问网络版本的《Pyt…

【Java】小白友好的SpringMVC开发基础学习笔记

目录 简介 Bean加载控制 设置请求映射路径 5种请求类型参数传递 JSON数据传递请求参数 响应 Jackson库处理JSON响应 REST风格 RESTful快速开发 拦截器 简介 Spring MVC是一个强大而灵活的Web应用程序框架&#xff0c;它通过使用MVC架构模式、注解和配置文件来实现请…

作业2.2

一&#xff0e;选择题 1、编写C程序一般需经过的几个步骤依次是&#xff08; B &#xff09; A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据有关操作组装在…

ctfshow web-77

开启环境: 先直接用伪协议获取 flag 位置。 c?><?php $anew DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString(). );} exit(0); ?> 发现 flag36x.txt 文件。同时根目录下还有 readflag&#xff0c;估计需要调用 readflag 获…

魔改冰蝎 —— 绕过检测,自动生成免杀后门

为什么要魔改工具&#xff1f; 生成的代码很容易被监测 生成的后门很容易被杀软杀掉 了解冰蝎流量特征 开启http代理&#xff0c;数据经过BP抓包进行分析数据 冰蝎数据包分析&#xff1a; 1、三个请求头固定 AcceptAccept-LanguageUser-Agent&#xff08;内部有十个&a…

Web3行业研究逐步加强,“链上数据”缘何成为关注焦点?

据中国电子报报道&#xff0c;近日&#xff0c;由中关村区块链产业联盟指导&#xff0c;中国信息通信研究院牵头&#xff0c;欧科云链控股有限公司参与编写的《全球Web3产业全景与发展趋势研究报告&#xff08;2023年&#xff09;》正式发布。研究报告通过全面追踪国内外Web3产…

给mysql设置时区

每次重启MySQL服务器后&#xff0c;使用IDEA的database navigator连接都会出现这种情况 解决方式就是 命令行登录后 set global time_zone 8:00;嘿嘿把之前自家简书文章 给mysql设置时区 搬运过来了&#xff0c;方便查阅

01-Java基础语法

Java基础语法 1. 注释使用的技巧&#xff1a;注意点 2. 关键字2.1 概念2.2 第一个关键字class 3. 字面量区分技巧&#xff1a;扩展&#xff1a; 制表符&#xff1a; 4. 变量4.1 什么是变量&#xff1f;4.2 变量的定义格式4.2.1 格式详解4.2.2 常用的数据类型4.2.3 变量的注意事…