矩阵转置
来源:互联网 发布:淘宝怎么注册卖家账户 编辑:程序博客网 时间:2024/05/01 06:42
一般的矩阵专职算法复杂富为o(n*m)的算法,但是今天数据结构书上学到一种o(num)num代表非零元素的个数的算法,但是复杂度降低了很多。。。
代码如下:
#include<cstdio>#include<cstring>const int maxn=100+10;int a[maxn][maxn];//存储n*m的矩阵typedef struct{ int xx,yy,val;}non_zero;typedef struct{ non_zero data[maxn]; int Row,Col,num_zero;}Matrix;Matrix old,New;int n,m;int col[maxn],num[maxn];void init(){ int cnt=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { scanf("%d",&a[i][j]); if(a[i][j]!=0) { old.data[++cnt].xx=i; old.data[cnt].yy=j; old.data[cnt].val=a[i][j]; } } old.num_zero=cnt;}void change(){ New.num_zero=old.num_zero; New.Row=m; New.Col=n;}void zhuanzhi(){ int p,q; for(int i=1;i<=old.num_zero;i++) ++num[old.data[i].yy]; col[1]=1; for(int i=2;i<=m;i++) col[i]=col[i-1]+num[i-1]; for(int i=1;i<=old.num_zero;i++) { //printf("%d %d %d\n",old.data[i].xx,old.data[i].yy,old.data[i].val); p=old.data[i].yy; q=col[p]; New.data[q].xx=old.data[i].yy; New.data[q].yy=old.data[i].xx; New.data[q].val=old.data[i].val; ++col[p]; // printf("%d %d %d %d\n",q,New.data[q].xx,New.data[q].yy,New.data[q].val); }}void print(){ printf("num_zero:%d\n",New.num_zero); for(int i=1;i<=New.num_zero;i++) printf("%d %d %d %d\n",i,New.data[i].xx,New.data[i].yy,New.data[i].val);}int main(){ while(~scanf("%d%d",&n,&m)) { memset(col,0,sizeof(col)); memset(num,0,sizeof(num)); init();//输入矩阵 change();//完善新的矩阵的信息 zhuanzhi();//矩阵的转置 printf("----------------------------------------------------\n"); print(); } return 0;}/*6 70 12 9 0 0 0 00 0 0 0 0 0 0-3 0 0 0 0 14 00 0 24 0 0 0 00 18 0 0 0 0 015 0 0 -7 0 0 02 31 2 03 0 4*/
0 0
- 转置矩阵,逆矩阵和倒转置矩阵
- 求矩阵的转置矩阵和两个矩阵相乘
- 2.3 单位矩阵和转置矩阵
- 矩阵转置与矩阵相乘
- C++矩阵操作+,-,*,=,矩阵转置
- MTL 矩阵转置
- 矩阵转置
- 矩阵转置(C)
- 矩阵转置程序
- 稀疏矩阵转置
- 矩阵转置
- 转置矩阵
- CUDA 矩阵转置
- SQl 转置矩阵
- 矩阵转置
- mpi矩阵转置
- 矩阵的转置
- 矩阵转置
- 解决遇到Linux网络配置,从熟悉网络配置文件入手
- ubuntu 上编译含有<math.h>的C源程序
- 【Python】Python学习(二)——Python程序如何运行
- RCP/SWT/JFACE 问题及解决方案
- Opencv step by step - 加载视频
- 矩阵转置
- CentOS设置开机自动启动某服务
- 【Android】Android Layout Binder——根据layout布局文件自动生成findViewById的java代码的神器
- JavaScript引擎研究与C、C++与互调用
- hdoj.2054 A == B ? 20141027
- IOS非常有用的音频处理库
- 【Python】Python学习(三)——如何运行Python程序
- 字符编码(随录)
- java环境变量的配置