【数据结构与算法】对称矩阵,三角矩阵 详解

给出对称矩阵、三角矩阵的节省内存的存贮结构并写出相应的输入、输出算法。

对称矩阵和三角矩阵可以通过特殊的存储结构来节省内存。这种存储结构只存储矩阵的一部分元素,而不是全部元素。

对称矩阵:对于一个n阶对称矩阵,我们只需要存储主对角线及其上方或下方的元素。这可以通过一个一维数组来实现,数组的长度为n*(n+1)/2。对于矩阵中的元素a[i][j],如果i<=j,则其在数组中的位置为i*(i+1)/2+j。

#include <stdio.h>

#define MAX_ROW_INDEX 100
#define MAX_COL_INDEX 100
#define MAX_INDEX 100

typedef int Elemtype;

// 在存储对称矩阵的一维数组A中取对称矩阵的第i行第j列元素给elem
int getValueSymmetricMatrix(int A[], Elemtype *elem, int i, int j) {
    // 检查索引是否有效
    if(i < 1 || i > MAX_ROW_INDEX || j < 1 || j > MAX_COL_INDEX)
        return 0;
    int k;
    // 计算元素在数组中的位置
    if (i >= j) 
        k = i * (i - 1) / 2 + j - 1;
    else 
        k = j * (j - 1) / 2 + i - 1;
    // 获取元素的值
    *elem = A[k];
    return 1;
}

三角矩阵:对于一个n阶上三角矩阵,我们只需要存储主对角线及其上方的元素。这也可以通过一个一维数组来实现,数组的长度为n*(n+1)/2。对于矩阵中的元素a[i][j],如果i<=j,则其在数组中的位置为i*(i+1)/2+j。

#include <stdio.h>

#define MAX_ROW_INDEX 100
#define MAX_COL_INDEX 100
#define MAX_INDEX 100

typedef int Elemtype;

// 在存储下三角矩阵的一维数组A中取下三角矩阵的第i行第j列元素给elem
int getValueLowerTriangularMatrix(int A[], Elemtype *elem, int i, int j) {
    // 检查索引是否有效
    if(i < 1 || i > MAX_ROW_INDEX || j < 1 || j > MAX_COL_INDEX)
        return 0;
    int n = MAX_INDEX;
    int k;
    // 计算元素在数组中的位置
    if (i >= j)  
        k = i * (i - 1) / 2 + j - 1;
    else  
        k = n * (n + 1) / 2;
    // 获取元素的值
    *elem = A[k];
    return 1;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【单片机毕业设计选题24014】-基于Arduino的瓜果采摘机构设计

系统功能: 使用MeArm机械臂, 上电后四路舵机处于初始90度位置&#xff0c;通过APP"蓝牙调试器"连接手机后可通过手机端控制四路舵机执行单独或连续的动作&#xff0c;并读取颜色传感器的RGB值。 主要功能模块原理图: 资料获取地址 系统主要功能模块代码 //存储电机…

备忘录文字颜色怎么改 备忘录改变字体颜色方法

在日常的工作和生活中&#xff0c;备忘录已经成为我不可或缺的好帮手。但是&#xff0c;面对满满当当的备忘录&#xff0c;有时候不同的任务和信息都混在一起&#xff0c;让人眼花缭乱。我常常想&#xff0c;如果能改变备忘录中的文字颜色&#xff0c;用以区分不同类别的事项&a…

如何打开pak文件-翻译pak语言包

最近碰到一些程序的语言包是pak格式&#xff0c;用Notepad打开全是乱码&#xff0c;百度搜索了一下&#xff0c;pak是一种少见的压缩文件格式&#xff0c;是pak Quake系列游戏所采用的一种特殊压缩包格式&#xff0c;由Quake游戏公司开发&#xff0c;用高版本的winrar可以打开&…

哪个城市的Delphier最多?Delphier平均年龄多大了?

先来看看哪个城市的Delphier最多&#xff1a; 北上广深不是白叫的&#xff0c; 大家想换工作&#xff0c;就去这些大城市&#xff0c;机会多。 有人会觉得奇怪&#xff0c;怎么才这么几个人&#xff1f; 因为以上数据统计基数为2000人&#xff0c; 根据微信公众号和QQ群得出…

好用耐用充电宝有哪些牌子?公认性能超全充电宝品牌

在共享充电宝遍布大街小巷的今天&#xff0c;许多人可能会觉得拥有一款自己的充电宝已经不再必要。然而&#xff0c;共享充电宝的高昂费用和不够便携的特点&#xff0c;让越来越多的消费者开始重新考虑购买一款属于自己的充电宝。那么&#xff0c;在众多充电宝品牌中&#xff0…

反激开关电源整流桥选型及计算

整流桥的作用就是把输入交流电压整形成直流电压&#xff0c;把正弦波整成馒头波&#xff0c;由于整流管的单向导电 性&#xff0c;在输入电压瞬时值小于滤波电容上电压时整流桥&#xff0c;在这个时候是不导通的&#xff0c;使整流桥的电流变 成2-3ms左右的窄脉冲。为获得所需…

python-jupyter notebook安装教程

&#x1f308;所属专栏&#xff1a;【python】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的…

深度学习(理论知识)

一、监督学习、自监督和半监督 1、监督学习&#xff08;Supervised Learning&#xff09; 概念 监督学习是一种机器学习方法&#xff0c;通过使用带标签的数据进行训练&#xff0c;模型学习从输入到输出的映射关系。数据集中的每个样本都包含输入特征&#xff08;features&am…

开辟一个存储空间以存放一个结构体数据

在软件开发中&#xff0c;常常需要动态地分配和撤销内存空间&#xff0c;例如对动态链表中结点的插入与删除。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C提供了较简便而功能较强的运算符new和delete 来取代malloc和free函数。注意&#xff1a;new和delete是运…

使用查表法计算NTC热敏电阻的温度

代码&#xff1a; hardware.c /*《AVR专题精选》随书例程2.编程技巧项目&#xff1a;查表法使用NTC测量温度文件&#xff1a;hardware.c说明&#xff1a;硬件驱动文件作者&#xff1a;邵子扬时间&#xff1a;2012年12月12日*/ #include "hardware.h"// IO初始化 vo…

分享一下,如何搭建个人网站的步骤

在这段充满探索与创造的奇妙旅途中&#xff0c;我就像一位耐心的建筑师&#xff0c;在数字世界的荒原上精心雕琢&#xff0c;两周的时光缓缓流淌。每天&#xff0c;我与代码共舞&#xff0c;手执HTML、CSS与JavaScript这三大构建魔杖&#xff0c;一砖一瓦地筑起了梦想中的网络城…

Rcmp: Reconstructing RDMA-Based Memory Disaggregation via CXL——论文阅读

TACO 2024 Paper CXL论文阅读笔记整理 背景 RDMA&#xff1a;RDMA是一系列协议&#xff0c;允许一台机器通过网络直接访问远程机器中的数据。RDMA协议通常固定在RDMA NIC&#xff08;RNIC&#xff09;上&#xff0c;具有高带宽&#xff08;>10 GB/s&#xff09;和微秒级延…

星戈瑞FITC-Cytochrome C:荧光标记细胞色素C的研究与应用

细胞色素C&#xff08;Cytochrome C&#xff09;是一种位于线粒体内膜上的蛋白质。为了深入地研究细胞色素C在细胞生物学和病理学中的功能&#xff0c;科学家们常常采用荧光标记技术对其进行追踪和观察。其中&#xff0c;异硫氰酸荧光素&#xff08;FITC&#xff09;作为一种常…

《Deep learning practice》learning notes

学习笔记&#xff1a; 【公开课】旷视x北大《深度学习实践》&#xff08;28课时全&#xff09; R Talk | 旷视科技目标检测概述&#xff1a;Beyond RetinaNet and Mask R-CNN 文章目录 Lecture 1: Introduction to Computer Vision and Deep Learning&#xff08;孙剑&#x…

生信网络学院|06月21日《SolidWorks Costing助力制造企业建立成本核算体系》

课程主题&#xff1a;SolidWorks Costing助力制造企业建立成本核算体系 课程时间&#xff1a;2024年06月21日 14:00-14:30 主讲人&#xff1a;张丹清 生信科技 售前顾问 Costing成本分析简介钣金件成本分析加工件成本分析装配体成本分析总结&答疑 安装腾讯会议客户端或…

期货以旁观者心态关注市场,会更加理性

1.期货交易具备较高灵活度&#xff0c;相比于股票&#xff0c;期货盈利速度明显提升。针对普通投资者&#xff0c;适量参与中线投机更为合适。 2.选择期货品种需兼顾市场属性稳定与计划特点较弱两方面&#xff0c;以及波动剧烈、投机特征显著的品种。 3.若市场环境不利且缺乏机…

2024.1版 IDEA share project on github 报错

2024.1版 IDEA share project on github 报错 报错信息报错原因解决办法 报错信息 Cannot load information for github.com/Worldfickler:Request response: Access tothis site has been restricted. lf you believe this is an error, please contacthttps://support.githu…

利用Python爬取天气数据并实现数据可视化,一个完整的Python项目案例讲解

要使用Python爬取天气数据并进行制图分析分几个步骤进行&#xff1a; 选择数据源&#xff1a;首先&#xff0c;你需要找到一个提供天气数据的API或网站。一些常见的选择包括&#xff1a;OpenWeatherMap、Weatherbit、Weather Underground等。 安装必要的库&#xff1a;你需要安…

idea右侧找不到Maven,在View-> Tool Windows下也找不到

正常情况Idea右侧没有Maven&#xff0c;只需去View -> Tool Windows 目录中找到Maven并点击Maven&#xff0c;Idea右侧就会出现 问题&#xff1a; idea右侧找不到Maven&#xff0c;在View -> Tool Windows 目录中也找不到Maven&#xff0c;下图 全局搜索ctrl N&#xff…

Spring中网络请求客户端WebClient的使用详解

Spring中网络请求客户端WebClient的使用详解_java_脚本之家 Spring5的WebClient使用详解-腾讯云开发者社区-腾讯云 在 Spring 5 之前&#xff0c;如果我们想要调用其他系统提供的 HTTP 服务&#xff0c;通常可以使用 Spring 提供的 RestTemplate 来访问&#xff0c;不过由于 …