• 三元组顺序表表示的稀疏矩阵转置Ⅱ


    三元组顺序表表示的稀疏矩阵转置Ⅱ。设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

    代码一:手动模拟过程,不过比较慢

    1. #include
    2. using namespace std;
    3. #define int long long
    4. #define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    5. typedef pair PII;
    6. const int N=2e6+10;
    7. struct node
    8. {
    9. int m,n,num;
    10. vector > k; //三元组
    11. }s,p;
    12. signed main()
    13. {
    14. ios;
    15. cin>>s.m>>s.n>>s.num;
    16. for (int i=0;i
    17. {
    18. int a,b,c;
    19. cin>>a>>b>>c;
    20. s.k.push_back({{a,b},c});
    21. }
    22. p.m=s.n;
    23. p.n=s.m;
    24. p.num=s.num;
    25. int cnt=0;
    26. for (int j=0;j
    27. for (int i=0;i
    28. {
    29. if (s.k[i].first.second==j)
    30. {
    31. int a=s.k[i].first.second;
    32. int b=s.k[i].first.first;
    33. int c=s.k[i].second;
    34. p.k.push_back({{a,b},c});
    35. }
    36. }
    37. for (int i=0;i
    38. {
    39. int l=s.k[i].second;
    40. for (int j=0;j
    41. {
    42. if (p.k[j].second==l)
    43. cout<" "<" "<" "<
    44. }
    45. }
    46. return 0;
    47. }

    代码二:

    1. #include <bits/stdc++.h>
    2. using namespace std;
    3. #define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    4. #define int long long
    5. priority_queue<int,vector<int>,greater<int>> ll;
    6. priority_queue<int> rr;
    7. typedef pair<int,int> PII;
    8. const int N=2e6+10;
    9. struct node
    10. {
    11. int id1,id2;
    12. int x,y;
    13. int date;
    14. }str[N];
    15. bool cmp1(node a,node b)
    16. {
    17. if (a.x!=b.x) return a.x<b.x;
    18. else return a.y<b.y;
    19. }
    20. bool cmp2(node a,node b)
    21. {
    22. return a.id1<b.id1;
    23. }
    24. int n,m,t;
    25. signed main()
    26. {
    27. ios;
    28. cin>>n>>m>>t;
    29. for (int i=0;i<t;i++)
    30. {
    31. cin>>str[i].y>>str[i].x>>str[i].date;
    32. str[i].id1=i;
    33. }
    34. sort(str,str+t,cmp1);
    35. for (int i=0;i<t;i++) str[i].id2=i;
    36. sort(str,str+t,cmp2);
    37. for (int i=0;i<t;i++)
    38. {
    39. cout<<str[i].id2<<" "<<str[i].x<<" "<<str[i].y<<" "<<str[i].date<<endl;
    40. }
    41. return 0;
    42. }

  • 相关阅读:
    广度优先遍历一个目录下的所有文件BFS
    # Sql语句过长报错、查询慢优化方案探索
    Isaac-gym(4): 物理模拟
    linux C读写锁
    vite自定义打包路径
    Flowable主要子流程介绍
    Day51——JavaScript事件绑定,jQuery类库
    HTTPS内容详解(图解HTTP协议)
    034、test
    【Nginx23】Nginx学习:响应头与Map变量操作
  • 原文地址:https://blog.csdn.net/m0_74403543/article/details/133767941