牛刀小试--下三角对称矩阵压缩存储

解析博客:

矩阵存储和特殊矩阵的压缩存储_n阶对称矩阵压缩-CSDN博客

函数功能:

//为N阶下三角矩阵初始化成的一维数组分配空间
void Init_triangular_matrix(int *&matrix);
//返回二维下三角矩阵的值(压缩存取)
int get_Value_triangular_matrix(int matrix[],int x,int y);
//把值传进二维下三角矩阵矩阵(压缩存储)
void Assign_triangular_matrix(int matrix[],int input_value,int x,int y);
//输出展示压缩存储的下三角矩阵矩阵
void Display_triangular_matrix(int matrix[]);
//销毁下三角矩阵存储空间
void Destroy_triangular_matrix(int matrix[]);

函数实现:

#define max_wide 4
/**************************************************
函数名: Init_triangular_matrix
功  能: 初始化下三角矩阵,为其分配存储空间
参  数: int *&matrix:给对应矩阵分配空间
返回值: 无
**************************************************/
void Init_triangular_matrix(int *&matrix)
{//给地址分配空间matrix = (int*)malloc(sizeof(int)*(max_wide*(max_wide+1)/2));
}
/**************************************************
函数名: get_Value_triangular_matrix
功  能: 得到下三角矩阵的值(因为是压缩存储,所以需要转换)
参  数: (1)int matrix[]:下三角矩阵矩阵存储数据的一维数组(2)int x:对应的横坐标(3)int y:纵坐标
返回值: int:对应坐标的值
**************************************************/
int get_Value_triangular_matrix(int matrix[],int x,int y)
{if(x >= y){return matrix[x*(x+1)/2+y];}else    //上三角,则直接返回末尾{return matrix[max_wide*(max_wide+1)/2];}
}
/**************************************************
函数名: Assign_triangular_matrix
功  能: 给压缩下三角矩阵赋值(和取值一样,也是通过一维数组转换)
参  数: (1)int matrix[]:要赋值的下三角压缩矩阵(2)int input_value:要赋的值(3)int x:对应的横坐标(4)int y:对应的纵坐标
注 意: 上三角, 相当于整体赋值一个数,下三角则正常赋值
返回值: 无
**************************************************/
void Assign_triangular_matrix(int matrix[],int input_value,int x,int y)
{if(x >= y){matrix[x*(x+1)/2+y] = input_value;}else      //上三角整体赋值{matrix[max_wide*(max_wide+1)/2] = input_value;}return;
}
/**************************************************
函数名: Display_triangular_matrix
功  能: 输出展示下三角矩阵(调用取值函数)
参  数: int matrix[]:要展示的下三角矩阵
返回值: 无
**************************************************/
void Display_triangular_matrix(int matrix[])
{int i,j;for(i = 0; i<max_wide; i++){for(j = 0; j<max_wide; j++){printf("%5d",get_Value_triangular_matrix(matrix,i,j));}printf("\n\n");}
}
/**************************************************
函数名: Destroy_triangular_matrix
功  能: 销毁下三角矩阵的空间
参  数: int matrix[]:要销毁的压缩下三角矩阵
返回值: 无
**************************************************/
void Destroy_triangular_matrix(int matrix[])
{free(matrix);
}

main函数调用

int main()
{int *matrix_test1;int line,row;//行,列int input_value;Init_triangular_matrix(matrix_test1);printf("\n请输入对称矩阵上三角常量:\n");scanf("%d",&input_value);matrix_test1[max_wide*(max_wide+1)/2] = input_value;printf("\n下面请输入对称矩阵下三角部分即可:\n");for(line = 0; line < max_wide; line++){printf("\n请输入第%d行的%d个数据元素:\n",line+1,line+1);for(row = 0; row <= line; row++){scanf("%d",&input_value);Assign_triangular_matrix(matrix_test1,input_value,line,row);}}Display_triangular_matrix(matrix_test1);Destroy_triangular_matrix(matrix_test1);return 0;
}

下三角矩阵完整代码:

#include <stdio.h>
#include <malloc.h>
#define max_wide 4//为N阶下三角矩阵初始化成的一维数组分配空间
void Init_triangular_matrix(int *&matrix);
//返回二维下三角矩阵的值(压缩存取)
int get_Value_triangular_matrix(int matrix[],int x,int y);
//把值传进二维下三角矩阵矩阵(压缩存储)
void Assign_triangular_matrix(int matrix[],int input_value,int x,int y);
//输出展示压缩存储的下三角矩阵矩阵
void Display_triangular_matrix(int matrix[]);
//销毁下三角矩阵存储空间
void Destroy_triangular_matrix(int matrix[]);/**************************************************
函数名: Init_triangular_matrix
功  能: 初始化下三角矩阵,为其分配存储空间
参  数: int *&matrix:给对应矩阵分配空间
返回值: 无
**************************************************/
void Init_triangular_matrix(int *&matrix)
{//给地址分配空间matrix = (int*)malloc(sizeof(int)*(max_wide*(max_wide+1)/2));
}
/**************************************************
函数名: get_Value_triangular_matrix
功  能: 得到下三角矩阵的值(因为是压缩存储,所以需要转换)
参  数: (1)int matrix[]:下三角矩阵矩阵存储数据的一维数组(2)int x:对应的横坐标(3)int y:纵坐标
返回值: int:对应坐标的值
**************************************************/
int get_Value_triangular_matrix(int matrix[],int x,int y)
{if(x >= y){return matrix[x*(x+1)/2+y];}else    //上三角,则直接返回末尾{return matrix[max_wide*(max_wide+1)/2];}
}
/**************************************************
函数名: Assign_triangular_matrix
功  能: 给压缩下三角矩阵赋值(和取值一样,也是通过一维数组转换)
参  数: (1)int matrix[]:要赋值的下三角压缩矩阵(2)int input_value:要赋的值(3)int x:对应的横坐标(4)int y:对应的纵坐标
注 意: 上三角, 相当于整体赋值一个数,下三角则正常赋值
返回值: 无
**************************************************/
void Assign_triangular_matrix(int matrix[],int input_value,int x,int y)
{if(x >= y){matrix[x*(x+1)/2+y] = input_value;}else      //上三角整体赋值{matrix[max_wide*(max_wide+1)/2] = input_value;}return;
}
/**************************************************
函数名: Display_triangular_matrix
功  能: 输出展示下三角矩阵(调用取值函数)
参  数: int matrix[]:要展示的下三角矩阵
返回值: 无
**************************************************/
void Display_triangular_matrix(int matrix[])
{int i,j;for(i = 0; i<max_wide; i++){for(j = 0; j<max_wide; j++){printf("%5d",get_Value_triangular_matrix(matrix,i,j));}printf("\n\n");}
}
/**************************************************
函数名: Destroy_triangular_matrix
功  能: 销毁下三角矩阵的空间
参  数: int matrix[]:要销毁的压缩下三角矩阵
返回值: 无
**************************************************/
void Destroy_triangular_matrix(int matrix[])
{free(matrix);
}int main()
{int *matrix_test1;int line,row;//行,列int input_value;Init_triangular_matrix(matrix_test1);printf("\n请输入对称矩阵上三角常量:\n");scanf("%d",&input_value);matrix_test1[max_wide*(max_wide+1)/2] = input_value;printf("\n下面请输入对称矩阵下三角部分即可:\n");for(line = 0; line < max_wide; line++){printf("\n请输入第%d行的%d个数据元素:\n",line+1,line+1);for(row = 0; row <= line; row++){scanf("%d",&input_value);Assign_triangular_matrix(matrix_test1,input_value,line,row);}}Display_triangular_matrix(matrix_test1);Destroy_triangular_matrix(matrix_test1);return 0;
}

运行结果:

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

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

相关文章

物流数据分析成本利润计算软件,佳易王物流货运单管理系统操作教程

前言&#xff1a; 物流数据分析成本利润计算软件&#xff0c;佳易王物流货运单管理系统操作教程 以下软件操作教程以&#xff0c;佳易王物流单统计分析软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 一、软件操作教程 1、佳易王物流货运…

数字人+展厅互动体验方案:多元化互动方式,拓宽文化文娱新体验

数字化创新已成为推动展厅可持续发展&#xff0c;创造全新消费体验&#xff0c;满足游客多元化需求的关键力量。 “数字人数字互动展厅”可以适应年轻一代的文化传播与多媒体互动新体验趋势&#xff0c;打造新生代潮玩聚集地&#xff0c;促进文化创意传播与互动体验场景创新&a…

CC2530寄存器编程学习笔记_按键中断

目录 无中断按键 第一步 分析原理图 电路工作原理 第二步 配置寄存器 第一步 配置为通用IO口 第二步 配置为输入 第三步 输入模式选择 按键抖动 中断按键 第一步中断寄存器的配置 上升沿 下降沿 第一步 开启总中断使能 第二步 开启端口中断使能 第三步 开启端口引…

传统中小企业如何布局短视频矩阵?云微客说别踩坑

如今社会&#xff0c;不管是老少都在刷短视频&#xff0c;短视频已经成为大家受欢迎的内容形式之一了。很多企业和个人看到了短视频赛道的这个商机&#xff0c;纷纷投身于短视频制作中&#xff0c;都想为了能够在竞争激烈的市场中脱颖而出。 但是&#xff0c;短视频账号并不是一…

精益思维驱动未来:人工智能产品设计的新篇章

在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面&#xff0c;从智能家居到自动驾驶&#xff0c;从医疗诊断到金融服务&#xff0c;AI的应用场景越来越广泛。然而&#xff0c;如何确保AI产品在设计之初就具备高效、灵活和可持…

ITIL4认证考试注意事项(附考试答题攻略)

作为一位持有ITIL4中级认证的IT服务管理专家&#xff0c;我深知备考ITIL4认证考试的重要性。在此分享我的复习备考经验&#xff0c;帮助你顺利通过考试。 1. 制定复习计划 制定详细的复习计划是备考的第一步。合理安排每天的复习时间&#xff0c;重点复习ITIL4的关键概念、四个…

CSS 【实用教程】(2024最新版)

CSS 简介 CSS 是层叠样式表( Cascading Style Sheets ) 的简写&#xff0c;用于精确控制 HTML 页面的样式&#xff0c;以便更好地展示图文信息或产生炫酷/友好的交互体验。 没有必要让所有浏览器都显示得一模一样的&#xff0c;好的浏览器有更好的显示&#xff0c;糟糕的浏览器…

E. Beautiful Array(cf954div3)

题意&#xff1a;给定一个数组&#xff0c;可以先对数组进行任意排序&#xff0c;每次操作可以选择一个ai&#xff0c;将它变成aik&#xff0c; 想让这个数组变成一个美丽数组&#xff08;回文数组&#xff09;&#xff0c;求最少操作次数 分析&#xff1a; 先找出相同的数字…

C++Windows环境搭建(CLion)

文章目录 CLion下载安装CLion下载CLion安装新建项目新建一个文件基础设置字体设置clion中单工程多main函数设置 参考 CLion下载安装 CLion下载 打开网址&#xff1a;https://www.jetbrains.com/clion/download/ 点击Download进行下载。 CLion安装 双击下载好的安装包&…

华为浏览器,Chrome的平替,插件无缝连接

文章目录 背景插件书签 背景 不知道各位小伙伴有没有这样的痛点&#xff0c;办公电脑、家里的电脑还有手机、平板等&#xff0c;收藏了一个网址或者在手机上浏览了某个网页&#xff0c;保存起来&#xff0c;可是一换平台或者换个电脑&#xff0c;在想要浏览之前收藏的东西&…

伺服【禾川X6】

驱动器&#xff1a; A&#xff1a;脉冲 B&#xff1a;EtherCAT // SV-X6 FB 040 AA 一套360 N&#xff1a;CANopen R&#xff1a;PROFINET 电机&#xff1a; SV-X6 MA 040A-B2 KA

将windows下载的包传到linux服务器上

以一个例子说明。 要将下面的docker压缩包上传到对应的172.39.18.2ip的服务器上。 使用如下命令 scp F:\下载内容\docker-20.10.7.tgz root172.39.18.2:/root/test/ 注意是在windows的cmd命令行中。

新版FMEA培训未能达到预期效果怎么办?

在制造业的质量管理中&#xff0c;FMEA&#xff08;Failure Mode and Effects Analysis&#xff0c;失效模式与影响分析&#xff09;是一项至关重要的工具&#xff0c;它帮助企业识别和评估产品或过程中潜在的失效模式&#xff0c;以及这些失效模式可能导致的后果。然而&#x…

FastAPI 学习之路(三十六)引入APIRouter

本次调整后的目录如下&#xff1a; 我们可以使用APIRouter来声明路径操作&#xff0c;我们先看下如何去使用。 我们根据选择划分为users和items来细分。 具体实现如下&#xff1a; ①先看items实现 from fastapi import APIRouter from fastapi import Depends from models.…

Unity AssetsBundle 详解

文章目录 1.AssetBundle 概念2.AssetBundle 优势3.AssetBundle 特性4.AssetBundle 使用流程4.1 分组4.2 打包4.3 加载包4.4 加载资源4.5 卸载资源 5.AssetBundleManifest6.AssetBundle的内存占用7.AB包资源加密 1.AssetBundle 概念 AssetBundle又称AB包&#xff0c;是Unity提供…

如何用Vue3和Plotly.js创建交互式表格?

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Plotly.js 动态生成 HTML 表格 应用场景介绍 在数据分析和可视化领域&#xff0c;经常需要以表格的形式展示数据。Plotly.js 是一款功能强大的 JavaScript 库&#xff0c;不仅可以创建交互式图表&#xff0c;…

基于Java的飞机大战游戏的设计与实现论文

点击下载源码 基于Java的飞机大战游戏的设计与实现 摘 要 现如今&#xff0c;随着智能手机的兴起与普及&#xff0c;加上4G&#xff08;the 4th Generation mobile communication &#xff0c;第四代移动通信技术&#xff09;网络的深入&#xff0c;越来越多的IT行业开始向手机…

【SVN-CornerStone客户端使用SVN-多人开发-解决冲突 Objective-C语言】

一、接下来,我们来说第三方的图形化界面啊, 1.Corner Stone:图形化界面,使用SVN, Corner Stone的界面,大概就是这样的, 1)左下角:是我们远程的一个仓库, 2)右上角:是我们本地的一些东西, 首先,在我的服务器上,再开一个仓库,叫做wechat, 我在这个里边,新建…

用Racket做一个拼图游戏——4 实现工具

4 实现工具 思路理清楚了&#xff0c;接下来就一个一个功能实现。在阐述实现功能的编程过程中&#xff0c;会延伸讲解编程思路、相关的Racket函数及相关知识点&#xff0c;力图达到在实践中的学习目的。 在编程实现过程中&#xff0c;首先实现图片操作功能&#xff0c;再通过…

告别混乱,可道云企业网盘个人标签,让文件管理更轻松

在信息爆炸的时代&#xff0c;你是不是常常觉得自己的大脑就像一台过载的处理器&#xff0c;各种文件、资料、想法在脑海中“打架”&#xff0c;让你焦头烂额&#xff1f; 别担心&#xff0c;可道云企业网盘个人标签功能来拯救你的“大脑内存”了&#xff01; 我们需要告别无…