数据结构 矩阵的快速转置 矩阵相乘(行逻辑连接顺序表)
来源:互联网 发布:java重定向到百度 编辑:程序博客网 时间:2024/05/16 08:15
快速转置
#include <iostream>#include <string.h>using namespace std;class num{ public: int x,y; int e; int row,col;}a[100000],b[100000];int sum[100000],deal[1000000];int main(){ int i,j,n,m,s,t,flag; int flag2; cin>>n>>m; a[0].row=n; a[0].col=m; flag=1; for(i=0;i<=n-1;i++) { for(j=0;j<=m-1;j++) { cin>>s; if(s) { a[flag].x=i; a[flag].y=j; a[flag++].e=s; } } } b[0].row=m; b[0].col=n; memset(sum,0,sizeof(sum)); for(i=1;i<=flag-1;i++) { sum[a[i].y]++; } deal[0]=1; for(i=1;i<=m-1;i++) { deal[i]=deal[i-1]+sum[i-1]; } for(i=1;i<=flag-1;i++) { flag2=deal[a[i].y]; b[flag2].x=a[i].y; b[flag2].y=a[i].x; b[flag2].e=a[i].e; deal[a[i].y]++; } int x=1; for(i=0;i<=b[0].row-1;i++) { for(j=0;j<=b[0].col-1;j++) { if(i==b[x].x&&j==b[x].y) { cout<<b[x].e<<" "; x++; }else { cout<<"0 "; } } cout<<endl; } return 0;}
矩阵的相乘 (带行连接信息的三元组表为行逻辑链接的顺序表)
#include <iostream>#include <stdlib.h>#include <string.h>using namespace std;class num{ public: int x,y; int e; int sum[10000],row,col,deal[10000];}a[1000],b[1000],c[1000];int sum[1000];int main(){ void build(num *ex,int n,int m); int i,j,n,m,s,t,flag; cout<<"请输入矩阵1"<<endl; cin>>n>>m; build(a,n,m); cout<<"请输入矩阵2"<<endl; cin>>n>>m; build(b,n,m); if(a[0].col!=b[0].row) { cout<<"您输入错误"<<endl; exit(0); } c[0].row=a[0].row; c[0].col=b[0].col; int fp,row,col,fp2; flag=1; for(i=0;i<=a[0].row-1;i++) { memset(sum,0,sizeof(sum)); if(i<a[0].row-1) { fp=(a[0].deal)[i+1]; }else { fp=(a[0].deal)[i]+1; } for(j=(a[0].deal)[i];j<fp;j++) { col=a[j].y; if(col<b[0].row-1) { fp2=(b[0].deal)[col+1]; }else { fp2=(b[0].deal)[col]+1; } for(int x=(b[0].deal)[col];x<fp2;x++) { sum[b[x].y]+=a[j].e*b[x].e; } } for(j=0;j<=b[0].col-1;j++) { if(sum[j]) { c[flag].x=i; c[flag].y=j; c[flag++].e=sum[j]; } } } t=1; for(i=0;i<=c[0].row-1;i++) { for(j=0;j<=c[0].col-1;j++) { if(c[t].x==i&&c[t].y==j) { cout<<c[t].e<<" "; t++; }else { cout<<"0 "; } } cout<<endl; } return 0;}void build(num *ex,int n,int m){ ex[0].row=n; ex[0].col=m; int flag=1,i,j,t,s; for(i=0;i<=n-1;i++) { t=0; for(j=0;j<=m-1;j++) { cin>>s; if(s) { t++; ex[flag].x=i; ex[flag].y=j; ex[flag++].e=s; } } ex[0].sum[i]=t; } ex[0].deal[0]=1; for(i=1;i<=n-1;i++) { (ex[0].deal)[i]=(ex[0].deal)[i-1]+(ex[0].sum)[i-1]; }}
- 数据结构 矩阵的快速转置 矩阵相乘(行逻辑连接顺序表)
- 行逻辑链接的顺序表实现稀疏矩阵的相乘(Java语言描述)
- 稀疏矩阵的行逻辑连接顺序表实现
- 数据结构--稀疏矩阵的快速转置及快速相乘操作
- OpenGL中的矩阵相乘的顺序 (转)
- 矩阵相乘的最优顺序
- OpenGL: 矩阵相乘的顺序
- OpenGL: 矩阵相乘的顺序
- OpenGL: 矩阵相乘的顺序
- 矩阵相乘的快速算法
- 矩阵相乘的快速算法
- 数据结构--稀疏矩阵(相乘)
- 求矩阵的转置矩阵和两个矩阵相乘
- 数据结构--数组和广义表--以行逻辑链接的顺序表为存储结构的矩阵的基本运算(求矩阵乘积)
- 稀疏矩阵——行逻辑连接的顺序三元组表
- 数据结构----稀疏矩阵的快速转置
- 行逻辑联接的顺序表实现矩阵转置及乘法
- 矩阵的应用--矩阵相乘与矩阵快速幂
- IIC
- boost::xml_parser 读取xml
- win7系统下一条网线实现两台笔记本电脑共享上网的方法
- android编译中的疑难杂症
- Codeforces Round #145 (Div. 2, ACM-ICPC Rules)
- 数据结构 矩阵的快速转置 矩阵相乘(行逻辑连接顺序表)
- poj3439 A Simple Problem with Integers 延迟更新的线段树
- 嵌入式操作系统内核原理和开发(等值block内存池设计)
- 写在腾讯大讲堂演讲之后
- Mina工具类v1.5
- 一个新的开源DUI界面库:DuiEngine
- PHP将相对路径URL转换为绝对路径URL
- 看个片也难
- pthread线程使用小结