数据结构实验之数组三:快速转置
Description
轉(zhuǎn)置運(yùn)算是一種最簡(jiǎn)單的矩陣運(yùn)算,對(duì)于一個(gè)mn的矩陣M( 1 = < m < = 10000,1 = < n < = 10000 ),它的轉(zhuǎn)置矩陣T是一個(gè)nm的矩陣,且T( i , j )=M( j , i )。顯然,一個(gè)稀疏矩陣的轉(zhuǎn)置仍然是稀疏矩陣。你的任務(wù)是對(duì)給定一個(gè)m*n的稀疏矩陣( m , n < = 10000 ),求該矩陣的轉(zhuǎn)置矩陣并輸出。矩陣M和轉(zhuǎn)置后的矩陣T如下圖示例所示。
稀疏矩陣M 稀疏矩陣T
Input
連續(xù)輸入多組數(shù)據(jù),每組數(shù)據(jù)的第一行是三個(gè)整數(shù)mu, nu, tu(tu <= 50),分別表示稀疏矩陣的行數(shù)、列數(shù)和矩陣中非零元素的個(gè)數(shù),隨后tu行輸入稀疏矩陣的非零元素所在的行、列值和非零元素的值,同一行數(shù)據(jù)之間用空格間隔。(矩陣以行序?yàn)橹餍?
Output
輸出轉(zhuǎn)置后的稀疏矩陣的三元組順序表表示。
Sample
Input
3 5 5
1 2 14
1 5 -5
2 2 -7
3 1 36
3 4 28
Output
1 3 36
2 1 14
2 2 -7
4 3 28
5 1 -5
Hint
#include <bits/stdc++.h>using namespace std;typedef struct node {int x, y, data; } arr;int cmp(arr a, arr b) {if(a.x == b.x)return a.y < b.y;return a.x < b.x; } int main() {arr p[1100];int n, m, t;while(cin >> n >> m >> t){for(int i = 0; i < t; i++)cin >> p[i].y >> p[i].x >> p[i].data;sort(p, p + t, cmp);for(int i = 0; i < t; i++){cout << p[i].x << " " << p[i].y <<" " << p[i].data << endl;}}return 0; }總結(jié)
以上是生活随笔為你收集整理的数据结构实验之数组三:快速转置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构实验之数组二:稀疏矩阵
- 下一篇: cyk追楠神系列三