我们称有许多值相同的元素或许多零元素,并且值相同的元素或零元素的分布有一定规律的矩阵为特殊矩阵。当矩阵的阶数比较大时,矩阵占据的内存空间相当多,这时,利用特殊矩阵元素的分布规律压缩矩阵的内存空间,对许多应用问题来说有重要的意义。特殊矩阵压缩存储的方法是,只存储特殊矩阵中数值不相同的元素。读取被压缩矩阵元素的方法是,利用特殊矩阵压缩存储的数学映射公式找到相应的矩阵元素。上三角矩阵就属于特殊矩阵。

(1)设矩阵A、矩阵B和矩阵C均为采用压缩存储方式的n阶上三角矩阵,矩阵元素均为int类型。

(2)编写实现矩阵加C=A+B的函数。

(3)编写矩阵元素显示函数。

(4)以下面的数据为测试例子,编写一个主函数进行测试。

1 2 3                10 20 30

A=0 4 5          B=  0  40 50

0 0 6                  0  0  60

注意:数学中,矩阵元素aij的下标满足条件:1<=i<=n,1<=j<=n.如果下标从0开始,那映射公式不同。

​
void add(int a[], int b[], int c[],int n)
{//n阶上三角矩阵加法int i;for (i = 0; i < n * (n + 1) / 2 ; i++){c[i] = a[i] + b[i];}
}
void print(int c[], int n)
{//n阶上三角矩阵按矩阵方式输出,其中矩阵采用压缩存储方式int i, j, k;c[n * (n + 1) / 2] = 0;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){if (i <= j)k = (i - 1) * (2 * n - i + 2)/2 + (j - i);else {k = n * (n + 1) / 2;}printf("%3d ", c[k]);}printf("\n");}
}
void main()
{int a[] = { 1,2,3,4,5,6 }, b[] = { 10,20,30,40,50,60 }, c[7];int n = 3;add(a, b, c, n);print(c, n);
}​

运行结果:

11  22  33
  0  44  55
  0   0  66

上三角矩阵的压缩存储相关推荐

  1. 数据结构的学习_4.2 矩阵的压缩存储(对称矩阵)

    4.2 矩阵的压缩存储(一) 在有些情况下,矩阵中含有许多值相同或者值为零的元素,如果还按前面的方法来存储这种矩阵,就会产生大量的空间浪费.为了节省存储空间,可以对这类矩阵采用压缩存储. 4.2.1 ...

  2. 数据结构--三角矩阵的压缩存储

    三角矩阵 三角矩阵的常用压缩方式有两种: 线性压缩 使用三角形的二维数组压缩 线性压缩存储三角矩阵 下三角矩阵: 上三角矩阵: 以下三角矩阵的线性压缩存储为例,进行实现: package pers.z ...

  3. 哈夫曼压缩和矩阵压缩存储

    对于数组的压缩存储,一维数组主要使用哈夫曼压缩,多维数组主要采用矩阵压缩的形式,对特殊矩阵和系数矩阵进行压缩. 哈夫曼压缩 哈夫曼压缩是由哈夫曼树推广而来的,是哈夫曼编码的重要应用.哈夫曼树 ─ 即最 ...

  4. 34-对称矩阵的压缩存储

    对于矩阵这样由n行n列构成的数据集合,可以通过二维数组来进行存储. 在实际工程中也会用到一些特殊的矩阵, 特殊矩阵可以"压缩"的一种思维来降低空间需求. (1)对角矩阵 (2)对称 ...

  5. C/C++实现上、下三角矩阵的压缩存储

    存储思路 上.下三角的压缩存储和对称矩阵的压缩存储(上三角部分.下三角部分)类似,不过是多了一个常数要存储. 对称矩阵的压缩存储 代码 #include <iostream>using n ...

  6. 特殊矩阵的压缩存储(详细版 通俗易懂 含c语言稀疏矩阵十字链表代码 )

    前言 此文章是本人第一篇博客,目的在于巩固过去所学的知识,同时可能会给大家带来一丝丝帮助,但由于没有经验加上本人能力极其有限,文章中可能存在不足之处,还请读者能够指正(`・ω・´). 这篇文章首先会介 ...

  7. 数组9——数组的压缩存储1——基本内容

    [压缩存储] 有些高阶矩阵中,非零的元素非常少,此时若使用二维数组将造成存储空间的浪费,这时,可只存储部分元素,从而提高存储空间的利用率.通常的做法是为多个相同值的元素只分配一个存储单元,对值为零的元 ...

  8. 数组10——数组的压缩存储2——上三角阵的压缩存储

    编写一个算法,将一个以行为主序存储的一维数组转换为以列为主序压缩存储的一维数组.例如,设有n×n的上三角矩阵A的上三角元素已按行为主序连续存放在数组b中,请设计一个算法Trans将b中元素按列为主序存 ...

  9. 3~4矩阵的压缩存储(下)【详解】

    目录 一.特殊矩阵的压缩存储 1.数组的定义 1.1概述 1.2数组与线性表的关系 1.3特点 2.数组的存储结构 2.1一个数组 2.2多维数组 二.矩阵的压缩存储 1.概述 1.1压缩存储 1.2 ...

最新文章

  1. 服务器证书安装配置指南(Nginx)-天威诚信
  2. Linux定时增量更新文件--转
  3. iptables(二)--扩展详解
  4. 知识图谱实体链接:一份“由浅入深”的综述
  5. javaWeb服务详解(含源代码,测试通过,注释) ——Dept的Dao层
  6. 数据库备份DBS商业化发布
  7. mysql新增列并同时增加数据_图解MySQL | [原理解析] MySQL 为表添加列 是怎么quot;立刻quot;完成的...
  8. JDK源码解析之java.util.AbstractCollection
  9. JVM垃圾回收机制GC详解
  10. sqlplus 小记
  11. 修改Linux文件的读写权限
  12. 神奇DP [HNOI2004] 打砖块
  13. 单词记忆系统-项目需求分析
  14. PL/SQL通过 scan ip 连接数据库
  15. 博弈论分析题_《博弈论》期末考试试题
  16. 滑铁卢大学开发了一套AI工具,教泥瓦匠初学者搬砖诀窍
  17. Android面试你必须要知道的那些知识,已拿offer附真题解析
  18. 国产CAD制图软件中怎么设置两点标注?
  19. 创新实训(9)——SpringBoot整合solr
  20. java xmap_使用XMAP完成JavaBean和XML之间转换

热门文章

  1. Web项目控制台无法打印中文,输出中文乱码,request设置了UTF-8
  2. Doxygen 详细使用
  3. N个数求和 (20分)
  4. x265-1.8版本-common/contexts.h注释
  5. linux ftp 解压缩命令,常用五种Linux环境中的压缩和解压命令示范 | OPS技术联盟
  6. 怎么把视频MD5值修改一下?分享几种简单的修改方法
  7. 按丶自动打开计算机,联想电脑台式机启动自动进入Lenovo diagnostics界面
  8. EDK2之debug
  9. C语言基础:最简单的程序
  10. 如何将网络上的共享文件映射到本地