sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】
2013-12-19 17:43
417 查看
转置矩阵
Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^_^题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1592
题目描述
把矩阵A的行换成相应的列,得到的新矩阵称为A的转置矩阵,记作A'或A。给你一个矩阵,求它的转置矩阵。
输入
输入数据的第一行是两个正整数R和C(1<=R,C<=10),分别代表矩阵的行数和列数。接下来R行,每行C个空格隔开的整数。输出
输出转置后的矩阵,每行中相邻的两个数用空格隔开。示例输入
3 3 1 2 3 4 5 6 7 8 9
示例输出
1 4 7 2 5 8 3 6 9
提示
代码:#include<iostream> #include<string.h> #include<string> using namespace std; struct vode { int i,j; int date; }; struct node { int mu,nu,tu; struct vode data[1000]; }; struct node M,T; void zhuanzhi(); int main() { M.tu=0; T.tu=0; cin>>M.mu>>M.nu; int i,j,k; for(i=1; i<=M.mu; i++) for(j=1; j<=M.nu; j++) { int temp; cin>>temp; //if(temp!=0)//修改此处可以筛选掉date值为0的数 { M.data[++M.tu].date=temp; M.data[M.tu].i=i; M.data[M.tu].j=j; } } zhuanzhi(); for(i=1;i<=T.tu;i++) { if(i%T.nu==0) { cout<<T.data[i].date<<endl; } else cout<<T.data[i].date<<" "; } return 0; } void zhuanzhi()//快速转置算法 { int col,p,t,q; T.tu=M.tu; T.mu=M.nu; T.nu=M.mu; int cpot[1000]={0},num[1000]={0}; if(T.tu) { for(col=1;col<=M.nu;col++) num[col]=0; for(t=1;t<=M.tu;++t) ++num[M.data[t].j]; cpot[1]=1; for(col=2;col<=M.nu;col++) cpot[col]=cpot[col-1]+num[col-1]; for(p=1;p<=M.tu;p++) { col=M.data[p].j; q=cpot[col]; T.data[q].i=M.data[p].j; T.data[q].j=M.data[p].i; T.data[q].date=M.data[p].date; ++cpot[col]; } } }
View Code
相关文章推荐
- 稀疏矩阵的压缩存储及转置,快速转置法,C++代码实现
- C++实现稀疏矩阵的压缩存储、转置、快速转置
- 稀疏矩阵的压缩存储及快速转置
- 【代码】稀疏矩阵的压缩存储与转置算法
- 【数据结构】稀疏结构及稀疏矩阵的压缩存储,矩阵的(快速)转置
- 稀疏矩阵-压缩存储-列转置法- 一次定位快速转置法
- 【数据结构】稀疏矩阵的压缩存储和转置算法(C++代码)
- 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)
- 【代码】稀疏矩阵的压缩存储与转置算法
- 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)
- 稀疏矩阵的压缩存储及转置算法
- 稀疏矩阵的压缩存储与快速转置 三元组法 类与对象实现
- 稀疏矩阵-压缩存储-列转置法- 一次定位快速转置法
- 5.3矩阵的压缩存储(稀疏矩阵转置和快速转置)
- 【数据结构】稀疏结构及稀疏矩阵的压缩存储,矩阵的(快速)转置
- 稀疏矩阵的压缩存储以及快速转置
- 稀疏矩阵的压缩存储和逆置,以及快速逆置,以及稀疏矩阵的加法
- 【LB】稀疏矩阵的快速转置原理及其算法
- 稀疏矩阵的压缩存储和快速逆置
- 实验五:稀疏矩阵的存储和快速转置