标签:输出 matrix int 矩阵 稀疏 三元组 小结 第四章
第四章主要学习了串,数组,广义表这三个数据结构。 而我准备谈一谈我解决稀疏矩阵这道题的心得体会。这两周有三道问题,串的模式匹配、稀疏矩阵和AI核心代码。其中我认为最简单的就是稀疏矩阵,但是题目虽然简单,我认为还是可以将我的思考方式分享给大家。 以下是题目:如果一个矩阵中,0元素占据了矩阵的大部分,那么这个矩阵称为“稀疏矩阵”。对于稀疏矩阵,传统的二维数组存储方式,会使用大量的内存来存储0,从而浪费大量内存。为此,可以用三元组的方式来存放一个稀疏矩阵。
对于一个给定的稀疏矩阵,设第r行、第c列值为v,且v不等于0,则这个值可以表示为 <。这个表示方法就称为三元组。那么,对于一个包含N个非零元素的稀疏矩阵,就可以用一个由N个三元组组成的表来存储了。
如:{<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); }
标签:输出,matrix,int,矩阵,稀疏,三元组,小结,第四章 来源: https://www.cnblogs.com/biss/p/10706868.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。