18722 稀疏矩阵的运算

思路:
快速转置算法的基本思想是预先计算出转置后的三元组在新数组中的位置,然后直接将元素放到对应的位置上。这样做的好处是只需要遍历一次原数组,就可以完成转置操作。

步骤如下:
1. 初始化一个新的三元组数组,用于存储转置后的矩阵。
2. 初始化一个数组,用于存储原矩阵每列的非零元素个数。
3. 遍历原矩阵的三元组,统计每列的非零元素个数。
4. 根据每列的非零元素个数,计算出转置后的三元组在新数组中的位置。
5. 遍历原矩阵的三元组,将每个元素放到新数组的对应位置上。

伪代码:
```
function fastTranspose(M, T):
    初始化数组 numCols 和 position
    for i in range(1, M.cols+1):
        numCols[i] = 0
    for i in range(1, M.t+1):
        numCols[M.data[i].j] += 1
    position[1] = 1
    for i in range(2, M.cols+1):
        position[i] = position[i-1] + numCols[i-1]
    for i in range(1, M.t+1):
        j = position[M.data[i].j]
        T.data[j].i = M.data[i].j
        T.data[j].j = M.data[i].i
        T.data[j].e = M.data[i].e
        position[M.data[i].j] += 1
```

C++代码:

#include <iostream>
#include <vector>using namespace std;struct Triple {int i, j, e;
};void fastTranspose(vector<Triple>& M, vector<Triple>& T, int n, int m, int k) {vector<int> numCols(m+1, 0), position(m+1, 0);T.resize(k+1);for (int t = 1; t <= k; ++t)++numCols[M[t].j];position[1] = 1;for (int col = 2; col <= m; ++col)position[col] = position[col-1] + numCols[col-1];for (int t = 1; t <= k; ++t) {int j = position[M[t].j];T[j].i = M[t].j;T[j].j = M[t].i;T[j].e = M[t].e;++position[M[t].j];}
}int main() {int n, m, k;cin >> n >> m >> k;vector<Triple> M(k+1), T;for (int t = 1; t <= k; ++t)cin >> M[t].i >> M[t].j >> M[t].e;fastTranspose(M, T, n, m, k);for (int t = 1; t <= k; ++t)cout << T[t].i << " " << T[t].j << " " << T[t].e << "\n";return 0;
}


这段代码首先定义了一个结构体 Triple,用于存储三元组的行号、列号和值。然后定义了一个函数 fastTranspose,用于进行快速转置。最后在 main 函数中,读取输入的矩阵,调用 fastTranspose 函数进行转置,并输出转置后的矩阵。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

“咨询+数智化”双剑合璧,毕马威与用友的“最强拍档” | 商业创新同行者

作为全球“四大”会计师事务所之一&#xff0c;毕马威被很多人熟知&#xff0c;是因为其为很多上市公司提供了财务报告的审计服务。 实际上&#xff0c;审计业务并不是毕马威的全部&#xff0c;甚至不是其最大的业务版块。在审计、税务和咨询这三大业务中&#xff0c;咨询的营…

ABB 机器人与 Profinet 转 EthernetIP 网关的高效连接

Profinet转EthernetIP网关在工业自动化领域发挥着至关重要的作用。它主要的功能就是实现不同网络协议之间的数据交互&#xff0c;为各种设备的连接与协同工作搭建了桥梁。 以连接ABB机器人为例&#xff0c;Profinet转EthernetIP网关能够将ABB机器人高效地接入到不同的网络系统…

基于Java的建筑节能监测系统+公共建筑能耗监测系统+建筑能耗监测系统+节能监测系统

建筑节能监测系统公共建筑能耗监测系统建筑能耗监测系统节能监测系统能耗监测建筑能耗监测能耗分析能耗管理能耗预测能耗监控能耗监测平台建筑能耗 介绍 建筑节能监测系统是基于计算机网络、物联网、大数据和数据可视化等多种技术融合形成的一套节能监测系统 系统实现了对建…

k8s中,pod生命周期,初始化容器,容器探针,事件处理函数,理解其设计思路及作用

k8s中&#xff0c;为什么要设计pod 平台直接管理容器不是挺好的吗 为什么要以pod为单位进行管理&#xff0c; 然后把容器放在pod里面 那么有pod和没pod的区别是什么 也就是pod提供了什么作用 这个可以考虑从pod生命周期管理的角度去思考 如图&#xff0c;pod主容器在运行…

2024.9.24 数据分析

资料 111个Python数据分析实战项目&#xff0c;代码已跑通&#xff0c;数据可下载_python数据分析项目案例-CSDN博客 【数据挖掘六大项目实战】敢说这是全B站讲的最详细最通俗易懂的数据挖掘教程&#xff01;整整60集&#xff01;学不会来找我&#xff01;-数据挖掘、数据挖掘…

idea怎么快速生成get set方法,快捷键是什么?

idea怎么快速生成get set方法 参考文章&#xff1a;IntelliJ IDEA生成get/set方法的快捷键是什么 1、生成某个get set方法altenter 快捷键&#xff1a;altenter 2.生成整个类或者某个get set方法altinsert 快捷键&#xff1a;altinsert 点击后&#xff0c;会出现下图弹窗&…

工业边缘网关的应用及优势-天拓四方

工业边缘网关作为工业互联网架构中的关键组件&#xff0c;正逐渐成为工业自动化和智能化的必备设备。它位于工业现场与云端服务器之间&#xff0c;承担着数据采集、处理、传输和初步分析的重要任务。以下是工业边缘网关的应用、优势以及具体的应用举例。 一、工业边缘网关的应…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Gitea私有仓库

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建Gitea私有仓库 Gitea私有仓库是一款轻量级的自托管Git服务&#xff0c;它提供了与Github、Gitlab等类似的功能&#xff0c;但允许用户在自己的服务器上部署和运行&#xff0c;从而完全掌控代码的存储和访问权限…

城市污水管网流量在线监测系统解决方案

一、方案背景 随着城市化进程的快速推进&#xff0c;城市污水管理成为环境保护和城市可持续发展的重要议题。传统的人工巡查和间断性监测方式已无法满足现代城市污水管理的需求。目前城市污水管网在线监测中&#xff0c;液体的流速、水位、流量监测非常重要。很多管网都是地下密…

爬虫代理使用注意事项:避免踩雷的必备指南

在大数据时代&#xff0c;网络爬虫已经成为获取信息的重要工具。然而&#xff0c;使用爬虫代理并不是一件轻松的事&#xff0c;稍有不慎就可能踩雷。为了帮助大家更好地利用爬虫代理&#xff0c;我们整理了一些使用注意事项。无论你是新手还是老手&#xff0c;这些建议都能让你…

dotnet4.0编译问题

因为最近在写cobaltstrike的execute-assembly内存加载的c#项目 用visual studio2022编译&#xff0c;最低net只能用6.0版本的&#xff0c;并且execute-assembly不支持 我想使用4.x版本进行编译&#xff0c;因为visual studio不支持&#xff0c;那么使用命令行进行编译 因为要用…

鸿蒙OpenHarmony【轻量系统内核(标准库支持)】子系统开发

CMSIS支持 基本概念 [CMSIS]是Cortex Microcontroller Software Interface Standard&#xff08;Cortex微控制器软件接口标准&#xff09;的缩写&#xff0c;是对于那些基于ARM Cortex处理器的微控制器独立于供应商的硬件抽象层。它包含多个组件层&#xff0c;其中之一是RTOS…

Milvus - 架构设计详解

Milvus 是一个专为在大规模密集向量数据集上进行相似性搜索而设计的开源向量数据库系统。其架构建立在流行的向量搜索库之上&#xff0c;如 Faiss、HNSW、DiskANN 和 SCANN&#xff0c;能够处理数百万、数十亿甚至数万亿的向量数据。为了全面了解 Milvus 架构&#xff0c;我们首…

R包:ggheatmap热图

加载R包 # devtools::install_github("XiaoLuo-boy/ggheatmap")library(ggheatmap) library(tidyr)数据 set.seed(123) df <- matrix(runif(225,0,10),ncol 15) colnames(df) <- paste("sample",1:15,sep "") rownames(df) <- sapp…

Temu全球下载量突破7.3亿次!Temu怎么上架产品?

拼多多旗下的出海跨境平台自2022年9月推出以来&#xff0c;在国际上的市场份额不断扩大中。最新数据显示&#xff0c;截至今年8月&#xff0c;Temu在全球的下载量已经超过了7.35亿次。这一数据充分显示了Temu在全球范围内的受欢迎程度和快速增长的势头。 具体来说&#xff0c;T…

【深度学习】03-神经网络 4-1 Dropout 正则化 - 神经网络缓解过拟合的正则化方法

参数更新&#xff0c;只是更新一部分&#xff0c;剩下的部分&#xff0c;是进行缩放。即分数会扩大。 Dropout 正则化是一种深度学习中常用的正则化技术&#xff0c;最早由 Geoffrey Hinton 等人在 2012 年提出&#xff0c;旨在防止神经网络的过拟合。 1. 来源 Dropout 是由…

【Elasticsearch系列廿二】特殊参数

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Kafka系列之:安装使用kafka_exporter详细步骤

Kafka系列之:安装使用kafka_exporter详细步骤 一、kafka_exporter二、下载kafka_exporter三、理解Topic Metrics指标四、理解Consumer Groups Metrics指标五、启动kafka_exporter六、查看页面七、systemctl托管服务一、kafka_exporter kafka_exporter源码kafka_exporter下载页…

企业智能培训新方案,高效打造金牌员工

标品市场竞争激烈&#xff0c;小微企业因长期专注于非标业务或者偏定制化路线&#xff0c;在团队专业能力与大型企业间存在显著差距。专业人才短缺、培养成本高企、培训滞后、效果难测、资源不均、考核标准不一及知识转化率低等问题&#xff0c;成为其业务转型的绊脚石。 如何高…

Java项目: 基于SpringBoot+mybatis+maven师生共评的作业管理系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven师生共评的作业管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、…