博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构实验之数组三:快速转置(SDUT 3347)
阅读量:5115 次
发布时间:2019-06-13

本文共 1199 字,大约阅读时间需要 3 分钟。

Problem Description

转置运算是一种最简单的矩阵运算,对于一个m*n的矩阵M( 1 = < m < = 10000,1 = < n < = 10000 ),它的转置矩阵T是一个n*m的矩阵,且T( i , j )=M( j , i )。显然,一个稀疏矩阵的转置仍然是稀疏矩阵。你的任务是对给定一个m*n的稀疏矩阵( m , n < = 10000 ),求该矩阵的转置矩阵并输出。矩阵M和转置后的矩阵T如下图示例所示。

   
   稀疏矩阵M                             稀疏矩阵T


Input

连续输入多组数据,每组数据的第一行是三个整数mu, nu, tu(tu <= 50),分别表示稀疏矩阵的行数、列数和矩阵中非零元素的个数,随后tu行输入稀疏矩阵的非零元素所在的行、列值和非零元素的值,同一行数据之间用空格间隔。(矩阵以行序为主序)


Output

输出转置后的稀疏矩阵的三元组顺序表表示。


Sample Input

3 5 51 2 141 5 -52 2 -73 1 363 4 28

Sample Output

1 3 362 1 142 2 -74 3 285 1 -5

题解:矩阵转置就是把每一列按着行来写,这样就可以想到把坐标sort一下,输出就行了。

#include 
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long int ll;struct node{ int x, y, z;};struct node s[55];bool cmp(struct node a,struct node b){ if(a.y == b.y) return a.x < b.x; else return a.y < b.y;}int main(){ int mu, nu, tu; while(~scanf("%d %d %d", &mu, &nu, &tu)) { for(int i = 0; i < tu; i ++) { scanf("%d %d %d", &s[i].x, &s[i].y, &s[i].z); } sort(s, s + tu, cmp); for(int i = 0; i < tu; i ++) { printf("%d %d %d\n", s[i].y, s[i].x, s[i].z); } } return 0;}

 

转载于:https://www.cnblogs.com/lcchy/p/10139633.html

你可能感兴趣的文章
springboot No Identifier specified for entity的解决办法
查看>>
慵懒中长大的人,只会挨生活留下的耳光
查看>>
"远程桌面连接--“发生身份验证错误。要求的函数不受支持
查看>>
【BZOJ1565】 植物大战僵尸
查看>>
VALSE2019总结(4)-主题报告
查看>>
浅谈 unix, linux, ios, android 区别和联系
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
python常用函数
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
【工具相关】iOS-Reveal的使用
查看>>