转置矩阵

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[];
};
struct node M,T;
void zhuanzhi();
int main()
{
M.tu=;
T.tu=;
cin>>M.mu>>M.nu;
int i,j,k;
for(i=; i<=M.mu; i++)
for(j=; 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=;i<=T.tu;i++)
{
if(i%T.nu==)
{
cout<<T.data[i].date<<endl;
}
else
cout<<T.data[i].date<<" ";
}
return ;
}
void zhuanzhi()//快速转置算法
{
int col,p,t,q;
T.tu=M.tu;
T.mu=M.nu;
T.nu=M.mu;
int cpot[]={},num[]={};
if(T.tu)
{
for(col=;col<=M.nu;col++)
num[col]=;
for(t=;t<=M.tu;++t)
++num[M.data[t].j];
cpot[]=;
for(col=;col<=M.nu;col++)
cpot[col]=cpot[col-]+num[col-];
for(p=;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];
}
}
}

sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】的更多相关文章

  1. 数据的压缩存储与解压缩算法实现(C语言)

    在一些嵌入式的项目设计中,空间是相当宝贵的,因为一个CPU的存储是有限的,所以此时我们在保存数据的时候,喜欢来进行压缩保存,著名的有哈夫曼树算法,专门用来做压缩的算法,当然,本节我们不讨论这些稍微高级 ...

  2. 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)

    三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述) 用经典矩阵转置算法和普通的三元组矩阵转置在时间复杂度上都是不乐观的.快速转置算法在增加适当存储空间后实现快速转置具体原理见代码注释部 ...

  3. 稀疏矩阵三元组快速转置(转poklau123写的很清楚)

    关于稀疏矩阵的快速转置法,首先得明白其是通过对三元表进行转置.如果误以为是对矩阵进行转置,毫无疑问就算你想破脑袋也想不出个所以然,别陷入死胡同了! 对于一个三元表,行为i,列为j,值为v.需将其i与j ...

  4. 稀疏矩阵三元组表快速转置(C语言实现)

    本来准备昨天下午写的,但是因为去参加360众测靶场的考核耽搁了,靶场的题目还是挺基础的. 继续学习吧. 使用黑色墨水在白纸上签名就像由像素点构成的稀疏矩阵.如图4所示. 图4 手写体签名 [问题]请将 ...

  5. SDUT 3347 数据结构实验之数组三:快速转置

    数据结构实验之数组三:快速转置 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 转置运算是一 ...

  6. 特殊矩阵的压缩存储(转自chunlanse2014)

    对称矩阵 对于一个矩阵结构显然用一个二维数组来表示是非常恰当的,但在有些情况下,比如常见的一些特殊矩阵,如三角矩阵.对称矩阵.带状矩阵.稀疏矩阵等,从节约存储空间的角度考虑,这种存储是不太合适的.下面 ...

  7. Hive的压缩存储和简单优化

    一.Hive的压缩和存储 1,MapReduce支持的压缩编码 压缩格式 工具 算法 文件扩展名 是否可切分 对应的编码/解码器 DEFLATE 无 DEFLATE .deflate 否 org.ap ...

  8. java实现稀疏矩阵的压缩与解压

    任务要求 把棋盘当作一个稀疏矩阵,0表示没棋,1表示黑棋,2表示蓝棋. 把该稀疏矩阵压缩以三元组形式表示并以文件形式保存,再写另一个程序读取文件中的信息把压缩后的三元组还原成原来的稀疏矩阵. 其中三元 ...

  9. C++ 特殊矩阵的压缩存储算法

    1. 前言 什么是特殊矩阵? C++,一般使用二维数组存储矩阵数据. 在实际存储时,会发现矩阵中有许多值相同的数据或有许多零数据,且分布呈现出一定的规律,称这类型的矩阵为特殊矩阵. 为了节省存储空间, ...

随机推荐

  1. explicit,violate,volatile,mutable小结

    转自:http://blog.csdn.net/helonsy/article/details/7091130 explicit:放在构造函数前面可以阻止构造函数的隐式类型转换.这样可以避免不必要的错 ...

  2. SMT 的基本流程?SMT的工艺流程?SMT的设备操作?

    一.SMT工艺流程------单面组装工艺来料检测 --> 丝印焊膏(点贴片胶)--> 贴片 --> 烘干(固化) --> 回流焊接 --> 清洗 --> 检测 - ...

  3. WinForm多线程编程简单Demo

    需要搭建一个可以监控报告生成的CS(WinForm)工具,即CS不断Run,执行获取数据生成报告,经过研究和实践,选择了使用"WinForm多线程编程"的解决方案.当然参考了园中相 ...

  4. Peeking Iterator

    Given an Iterator class interface with methods: next() and hasNext(), design and implement a Peeking ...

  5. 【转】你可能不知道的Shell

    本文转自http://coolshell.cn/articles/8619.html,只摘取了其中的一部分. 再分享一些可能你不知道的shell用法和脚本,简单&强大! 在阅读以下部分前,强烈 ...

  6. poj1177

    题意:在平面直角坐标系内给出一些与坐标轴平行的矩形,将这些矩形覆盖的区域求并集,然后问这个区域的周长是多少.(边与边重合的地方不计入周长) 分析:线段树.曾经做过类似的求矩形覆盖的总面积的题.这道题同 ...

  7. php实验一

    实验准备 实验一:PHP开发环境配置,学习安装和使用集成PHP开发环境. 一. 分别下载和安装WAMP ,AppServ,XAMPP,phpstudy等软件,并测试页面. 开发环境配置 1)单独需要三 ...

  8. 一些笔试题(C/C++)

    1.there are two variables, don't use if.. else or ?: or switch or other judgement statements,find ou ...

  9. Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)

    前言:经常会看到有一些app的banner界面可以实现循环播放多个广告图片和手动滑动循环.本以为单纯的ViewPager就可以实现这些功能.但是蛋疼的事情来了,ViewPager并不支持循环翻页.所以 ...

  10. 迭代器iterator

    现在接着上篇的,写一来标识vector 的元素的对象迭代器iterator: 还是通过具体代码举例: 下面我讲了一个我暑期团队的故事哦~~: #include<iostream> #inc ...