SDUT-3347 数据结构实验之数组三:快速转置

在这里插入图片描述

首先补充下什么叫做稀疏矩阵:矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律,通常认为矩阵中非零元素的总数比上矩阵所有元素总数的值小于等于0.05时,则称该矩阵为稀疏矩阵(sparse matrix)。了解就可以跟题目没有一毛钱关系

这个题的数据量比较小只有50,所以可以用暴搜按顺序把矩阵逆置。也可是在输入的时候就按照(y,x)的顺序输入,然后排序。两种方法都能过,这后面的可以当成废话。前一种时间复杂度为(nu*tu),后一种视选择的排序方法而定,(tulogtu)到(tu)^2。讲真按数据范围来看,后一种快一些。

代码入下(c++):

#include <iostream>

using namespace std;
#include <bits/stdc++.h>
struct node
{
    int x,y;
    int data;

} s[10000];
bool cmp(node a,node b)
{
    if(a.x==b.x)
        return a.y<b.y;
    else
        return a.x<b.x;
}
int main()
{
    int mu,nu,tu;
    while(cin>>mu>>nu>>tu)
    {
        for(int i=0; i<tu; i++)
        {
            cin>>s[i].y>>s[i].x>>s[i].data;

        }
        sort(s,s+tu,cmp);
        for(int i=0; i<tu; i++)
            cout<<s[i].x<<" "<<s[i].y<<" "<<s[i].data<<endl;
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值