稀疏矩阵采用三元组存储,设计算法求两个矩阵的和。
来源:互联网 发布:opta数据查询 编辑:程序博客网 时间:2024/05/21 08:48
稀疏矩阵采用三元组存储,设计算法求两个矩阵的和。
看着提交时间快结束了,写一篇博客。
我感觉我代码的亮点是求和的时候,判断一下上一个三元表是否有,没有的话在新开辟一个,最后加完,用c++库函数排序一下,这样就可以输出了。
时间复杂度没仔细算(求大神点评),空间复杂度降低了。欢迎一起研究思路。
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;#define MAX 100typedef struct {int i,j;int e;}Triple;typedef struct {Triple data[MAX+1];int mu,nu,tu;//矩阵的行数、列数、和非零元个数 }TSMatrix;bool cmp(Triple a,Triple b){//降序排一下 if(a.i==b.i)//如果他们横坐标相同,按纵坐标排一下 {return a.j<b.j;}else {return a.i<b.i;}}void Input(TSMatrix &T){//输入 int tmp;for(int i=1;i<=T.mu;i++){for(int j=1;j<=T.nu;j++){scanf("%d",&tmp);if(tmp!=0)//非0元素就保存 {T.data[T.tu].i=i;T.data[T.tu].j=j;T.data[T.tu].e=tmp;T.tu++;}}}}void Output(TSMatrix T){//输出 int i,j,k=0;for(i=1;i<=T.mu;i++){for(j=1;j<=T.nu;j++){if(T.data[k].i==i&&T.data[k].j==j){printf("%d ",T.data[k++].e);}elseprintf("0 ");}putchar('\n');}}int jdg(Triple q,TSMatrix T1,int &tmp_k){//判断此位置是否有非0元素 int flag=0;for(int i=0;i<T1.tu;i++){if(T1.data[i].i==q.i&&T1.data[i].j==q.j){tmp_k=i;flag=1;break;}}if(flag)return 1;return 0;}void sum(TSMatrix &T1,TSMatrix T2){int k=0,tmp_k;for(int i=0;i<T2.tu;i++){if(jdg(T2.data[i],T1,tmp_k))//判断这个位置T1有没有 {T1.data[tmp_k].e+=T2.data[i].e;//这个位置有,直接加上 }else//这个位置没有开辟一下 {T1.data[T1.tu].i=T2.data[i].i;T1.data[T1.tu].j=T2.data[i].j;T1.data[T1.tu++].e=T2.data[i].e;}}sort(T1.data,T1.data+T1.tu,cmp);//进行排序一下,方便输出 }int main(){TSMatrix T1,T2;int tmp,q=0;printf("请输入矩阵的行数和列数\n");scanf("%d%d",&T1.mu,&T1.nu);T2.mu=T1.mu;T2.nu=T1.nu;T1.tu=0;printf("请输入矩阵T1\n");Input(T1);//Output(T1);T2.tu=0;printf("请输入矩阵T2\n");Input(T2);//Output(T2);sum(T1,T2);Output(T1);return 0;}
0 0
- 数据结构 数组操作 稀疏矩阵采用三元组存储,设计算法求两个矩阵的和。
- 稀疏矩阵采用三元组存储,设计算法求两个矩阵的和。
- 稀疏矩阵的三元组表示的实现及应用(2)——采用三元组存储稀疏矩阵,设计两个稀疏矩阵相加的运算算法
- 稀疏矩阵的三元组存储算法
- (十五)稀疏矩阵和三元组稀疏矩阵压缩算法
- 稀疏矩阵的三元组存储结构
- 稀疏矩阵的三元组顺序存储
- 稀疏矩阵的三元组存储
- 稀疏矩阵的三元组存储和逆置
- 稀疏矩阵三元组存储
- 利用稀疏矩阵的“三元组表”存储结构,实现两个矩阵的相加。
- 稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结
- 稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结
- 稀疏矩阵的三元组顺序表存储及矩阵相乘算法小结
- 稀疏矩阵的三元组
- 三元组存储求矩阵和
- 动态稀疏矩阵的两个三元组进行相加的算法
- 稀疏矩阵 三元组顺序存储
- 如何用git将项目代码上传到github
- python多线程获取网络数据,与单线程进行比较
- Codeforces B. Coupons and Discounts
- SSL协议详解
- GITHUB自学系列之六「团队合作利器 BRANCH」
- 稀疏矩阵采用三元组存储,设计算法求两个矩阵的和。
- java Web工作原理
- ActiveMQ SSL应用之七 ActiveMQ管理控制台队列Send To功能的使用
- 浅析linux内核中的idr机制
- Java中成员变量和成员方法的使用
- iOS 语音搜索通讯录算法
- MongoDB下载与安装
- 电商用户画像
- 文件的逻辑结构总结