题目
三元组顺序表表示的稀疏矩阵转置Ⅱ。设a和b为三元组顺序表变量,分别表示矩阵M和T。要求按照a中三元组的次序进行转置,并将转置后的三元组置入b中恰当的位置。
输入格式
输入第1行为矩阵行数m、列数n及非零元素个数t。
按行优先顺序依次输入t行,每行3个数,分别表示非零元素的行标、列标和值。
输出格式
按置入b中的顺序输出置入的位置下标,转置后的三元组行标、列标和值,数据之间用空格分隔,共t行。
输入样例
3 4 3
0 1 -5
1 0 1
2 2 2
输出样例
1 1 0 -5
0 0 1 1
2 2 2 2
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 7;
struct Matrix
{
int x, y;
int val;
}a[N], b[N];
int main()
{
int n, m, t, i, j;
int cnt = 0;
cin >> n >> m >> t;
for (i = 0; i < t; i++)
cin >> a[i].x >> a[i].y >> a[i].val;
for (i = 0; i < m; i++)
{
for (j = 0; j < t; j++)
{
if (a[j].y == i)
{
b[cnt].y = a[j].x;
b[cnt].x = a[j].y;
b[cnt].val = a[j].val;
cnt++;
}
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < t; j++)
{
if (b[j].y == i)
cout << j << " " << b[j].x << " " << b[j].y << " " << b[j].val << endl;
}
}
return 0;
}