当前位置: 首页 > news >正文

三元组(C++ 实现矩阵快速转置)

  三元组稀疏矩阵是一种高效存储稀疏矩阵的方法。它通过记录矩阵中非零元素的行、列和值来表示一个稀疏矩阵。我们在三元组里存储的是每个元素的行、列以及值。

题目:

  任意输入一个稀疏矩阵M,用三元组顺序表压缩存储该稀疏矩阵M,然后求其转置矩阵T,并输出转置矩阵T。

思路: 

1、这里运用了快速转置,降低时间复杂度

2、快速转置的核心是确定转置后矩阵,每行的第一个非零元在三元表中的序号

3、详细在代码注释中

代码:

#include<iostream>
using namespace std;
typedef struct node
{int i, j, e;
}Triple;
typedef struct node1
{node data[1000];int mu, nu, tu=0;//矩阵行数、列数、非零元个数
}TSMatrix;
void Transpose(TSMatrix m, TSMatrix& t)
{int num[100]={0}, head[100];t.mu = m.nu, t.nu = m.mu, t.tu = m.tu;if (t.tu)//非零元不为0个,则做下列操作{for (int i = 1; i <= t.mu; i++)//逆置矩阵的列变行,初始每行中的非零元个数为0num[i] = 0;for (int i = 1; i <= t.tu; i++)//遍历非零元num[m.data[i].j]++;//列变行,m中每列的非零元个数就是t中每列非零元的个数head[1] = 1;for (int i = 2; i <= t.mu; i++)//遍历t的行数head[i] = head[i - 1] + num[i-1];//每行的第一个非零元在三元表中的序号for (int i = 1; i <= t.tu; i++)//遍历非零元{int col = m.data[i].j;//取非零元的列数int l = head[col];//该列要存储的位置t.data[l].i = m.data[i].j, t.data[l].j = m.data[i].i;//行转列,列转行t.data[l].e = m.data[i].e;head[col]++;//该列元素下次存储往下一位}}
}
int main()
{TSMatrix m,t;int ju[51][51];cout << "输入行数,列数:" << endl;cin >>m.mu >> m.nu;for (int i = 1; i <= m.mu; i++)//输入初始矩阵,建立三元组for (int j = 1; j <= m.nu; j++){cin >> ju[i][j];if (ju[i][j] != 0){m.tu++;m.data[m.tu].e = ju[i][j];m.data[m.tu].i = i, m.data[m.tu].j = j;}}Transpose(m, t);//for (int i = 1; i <= m.tu; i++)//cout << m.data[i].e << " " << m.data[i].i << " " << m.data[i].j << endl;//cout << endl;//for (int i = 1; i <= t.tu; i++)//cout << t.data[i].e << " " << t.data[i].i << " " << t.data[i].j << endl;cout << "逆置后矩阵:" << endl;int k = 1;for (int i = 1; i <= t.mu; i++){for (int j = 1; j <= t.nu; j++){if (t.data[k].i == i && t.data[k].j == j)cout << t.data[k++].e << " ";elsecout << "0 ";}cout << endl;}}

相关文章:

三元组(C++ 实现矩阵快速转置)

三元组稀疏矩阵是一种高效存储稀疏矩阵的方法。它通过记录矩阵中非零元素的行、列和值来表示一个稀疏矩阵。我们在三元组里存储的是每个元素的行、列以及值。 题目&#xff1a; 任意输入一个稀疏矩阵M&#xff0c;用三元组顺序表压缩存储该稀疏矩阵M&#xff0c;然后求其转置矩…...

Apriori(关联规则挖掘算法)

关联规则分析 事务库 上表所示的购物篮数据即是一个事务库&#xff0c;该事务库记录的是用户行为的数据。 事务 上表事务库中的每一条记录被称为一笔事务。在购物篮事务中&#xff0c;每一次购物行为即为一笔事务&#xff0c;例如第一行数据“用户1购买商品A,B,C”即为一条事…...

new Object()到底占用几个字节

Java内存模型 对象内存中可以分为三块区域&#xff1a;对象头(Header)&#xff0c;实例数据(Instance Data)和对齐填充(Padding)&#xff0c;以64位操作系统为例(未开启指针压缩的情况)Java对象布局 如下图所示&#xff1a; 其中对象头中的Mark Word中的详细信息在文章synchr…...

瞬态抑制二极管TVS的工作原理?|深圳比创达电子EMC(上)

TVS二极管具有响应速度快、漏电流小、钳位电压稳以及无寿命衰减的特性&#xff0c;从小到信号线静电防护&#xff0c;大到电力系统抗雷击浪涌&#xff0c;TVS都发挥着至关重要的作用。本章对瞬态抑制二极管TVS工作机理展开分析&#xff0c;供产品选型参考。接下来就跟着深圳比创…...

Nginx 同一端口 同时支持http与https 协议

文章目录 需求分析 需求 通过 nginx &#xff0c;让同一端口 同时支持http与https 协议 分析 通过使用 Nginx&#xff0c;可以实现同一端口同时支持 HTTP 和 HTTPS 协议。下面是一种可能的配置方式&#xff1a; 配置 HTTP 服务 在 Nginx 配置文件中&#xff0c;添加以下配置…...

【Express】文件上传管理 multer 中间件

Multer是Node.js中用于处理文件上传的中间件。它可以帮助你处理文件上传的相关逻辑&#xff0c;如接收和保存上传的文件、限制文件大小、设置文件类型限制等。只能用于处理 multipart/form-data 类型的表单数据&#xff0c;它主要用于上传文件。 下面是使用Multer中间件的基本…...

性能监控软件是什么?有哪些优势?

在现代科技驱动的世界中&#xff0c;计算机系统的性能对于企业和个人用户都至关重要。性能监控软件是一种不可或缺的工具&#xff0c;可以帮助我们实时跟踪、分析和优化系统的性能。本文将介绍性能监控软件的概念、其重要性以及如何选择和使用这些工具来提高系统效率。 一、性能…...

分布式事务及CAP和BASE顶底

一、分布式事务 单体应用肯定就不存在分布式事务了&#xff0c;只有在分布式微服务系统中&#xff0c;各个服务之间通过RPC调用后&#xff0c;每个微服务有自己和数据库的连接&#xff0c;各个微服务的回滚不影响其他的微服务事务&#xff0c;这几必须使用分布式事务来解决分布…...

Django REST Framework完整教程-认证与权限-JWT的使用

文章目录 1.认证(Authentication)与权限(Permission)1.1.视图添加权限1.2.登录验证1.3.常用DRF自带权限类1.4.自定义权限类1.5.全局权限1.6.函数视图权限 2.认证详解2.1.认证方案2.2.如何使用TokenAuthentication&#xff1f; 3.JSON Web Token(JWT)认证3.1.工作原理3.2.安装3.…...

领域内容第18名

恭喜入榜...

[1024]程序员节 一晃6年过去了

加入开发者大军&#xff0c;一晃已是6年有余&#xff0c;从最初的Andoird开发如火如荼&#xff0c;到现在的秋风萧瑟&#xff0c;宛如被秋风吹得只剩躯干的树木&#xff0c;等待来年的焕发新芽。 我本不是一个科班出身的开发者&#xff0c;但是为了生活&#xff0c;说白了为了钱…...

数据结构 | 构造哈夫曼树

template<class T> void Heap<T>::PercolateUp() //为了向上调整为堆&#xff0c;我们需要比较当前节点和其父节点的值&#xff0c;如果父节点的值比当前节点大&#xff0c;则交换它们的值。 { int p size - 1, c (p - 1) / 2;//c表示当前节点的父节点&#xff0…...

实验室烧杯可以用超声波清洗机吗

实验室烧杯可以用超声波清洗机吗&#xff1f;答案是可以的&#xff01;超声波清洗机不仅可以清洗实验烧杯&#xff0c;还可以用于清洗实验室中的试管、培养皿、移液管、载玻片、容量瓶、锥形瓶等各类实验器皿。在实验中&#xff0c;如果烧杯清洁不到位&#xff0c;会使得实验数…...

Unity之ShaderGraph如何实现UV抖动

前言 今天我们通过噪波图来实现一个UV抖动的效果。 如下图所示&#xff1a; 关键节点 Time&#xff1a;提供对着色器中各种时间参数的访问 UV&#xff1a;提供对网格顶点或片段的UV坐标的访问。可以使用通道下拉参数选择输出值的坐标通道。 SimpleNoise&#xff1a;根据…...

#力扣:771. 宝石与石头@FDDLC

771. 宝石与石头 - 力扣&#xff08;LeetCode&#xff09; 一、Java class Solution {public int numJewelsInStones(String jewels, String stones) {int[] isJewel new int[z 1];for (int i jewels.length() - 1; i > 0; i--) isJewel[jewels.charAt(i)] 1;int cnt …...

【网络协议】聊聊拓扑网络结构与原理

拓扑结构 上一篇我们简单讲述了一种交换机的情况&#xff0c;但是实际的场景是比较复杂的&#xff0c;在一个楼层可能有几十或者上百个接口&#xff0c;那么当知道对方的IP地址&#xff0c;求对方的MAC地址&#xff0c;其实是通过ARP协议进行处理的。 上图是一个两个交换机的…...

uview表单 hooks

在UViewUI库中&#xff0c;使用hooks封装表单二次可以让我们以更灵活的方式使用表单组件。下面是一个示例&#xff0c;展示如何将表单封装成hooks&#xff0c;并以JSON形式传递参数&#xff1a; 首先&#xff0c;我们可以创建一个自定义的Hook来处理表单逻辑。在这个例子中&…...

车载视频如何转换视频格式

当你收集了多种视频想在车内进行播放&#xff0c;它们可能不会自动播放。你有可能会在屏幕上看到一条消息&#xff0c;显示“文件格式不受支持”&#xff0c;这是因为这些视频可能采用了你的汽车无法识别的格式。 那我们如何才可以转换为车载播放器上运行的最重要且最广泛使用…...

虚拟音频设备软件 Loopback mac中文版软件介绍

创建虚拟音频设备以从应用程序和音频输入设备获取声音&#xff0c;然后将其发送到音频处理应用程序&#xff0c;它就是—Loopback for Mac&#xff0c;Loopback mac为您提供高端工作室混音板的强大功能&#xff0c;有了它在Mac上传递音频会变得很容易。 Loopback for mac中文版…...

Android SurfaceControlViewHost介绍及使用

概要介绍 SurfaceControlViewHost是一个工具类&#xff0c; 用于帮助在其他进程中显示本进程的view。 SurfaceControlViewHost 为绘制进程持有&#xff0c;其中的SurfacePackage 交给另外的显示进程&#xff0c;在显示进程中的SurfaceView中通过SurfaceView.setChildSurface…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...