第四章小结-稀疏矩阵
第四章主要学习了串,数组,广义表这三个数据结构。 而我准备谈一谈我解决稀疏矩阵这道题的心得体会。这两周有三道问题,串的模式匹配、稀疏矩阵和AI核心代码。其中我认为最简单的就是稀疏矩阵,但是题目虽然简单,我认为还是可以将我的思考方式分享给大家。 以下是题目:
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄
如果一个矩阵中,0元素占据了矩阵的大部分,那么这个矩阵称为“稀疏矩阵”。对于稀疏矩阵,传统的二维数组存储方式,会使用大量的内存来存储0,从而浪费大量内存。为此,可以用三元组的方式来存放一个稀疏矩阵。
对于一个给定的稀疏矩阵,设第r行、第c列值为v,且v不等于0,则这个值可以表示为 <。这个表示方法就称为三元组。那么,对于一个包含N个非零元素的稀疏矩阵,就可以用一个由N个三元组组成的表来存储了。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。如:{<1, 1, 9>, <2, 3, 5>, <10, 20, 3>}就表示这样一个矩阵A:A[1,1]=9,A[2,3]=5,A[10,20]=3。其余元素为0。
要求查找某个非零数据是否在稀疏矩阵中,如果存在则输出其所在的行列号,不存在则输出ERROR。
看完题目后,以下是我的思考:首先题目已经很清楚的让我使用三元组表来解决问题,那么当然从这开始入手,一个稀疏矩阵中的数主要有三个属性:行、列、数值,那么我就先定义一个结构体将这三个属性包装起来 就可以当作三元组表的组成成员了。那么三元组表要怎么实现呢,我的想法是使用结构体数组,这也是最简单的方法。紧接着的就是数组的输入了,我定义了input_matrix这个函数直接输入数值,然后我定义了output_matrix 这个函数来实现判断是否存在并输出的功能,用一个简单的if判断即可输出,为使得输出方便一点,我引入了好用的flag。 以下是代码 #include<iostream> using namespace std;
void output_matrix(matrix m[],int value,int s) {//寻找是否存在并且输出它 int flag=1;//引入一个flag便于输出 for(int i=0;i<=s;i++) { if(m[i].value==value) { cout<<m[i].i<<" "<<m[i].j; flag=1; break; } else flag=0; } if(flag==0) cout<<"ERROR"; }
int main() { int m,n,s; cin>>m>>n>>s; matrix a[500]; for(int i=0;i<s;i++) { a[i]=input(); } int sum; cin>>sum; output_matrix(a,sum,s); }

更多精彩