三元组顺序表表示的稀疏矩阵转置Ⅱ
- 题目
- 输入格式
- 输出格式
- 输入样例
- 输出样例
- 代码
题目
三元组顺序表表示的稀疏矩阵转置Ⅱ。设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;
}