首先补充下什么叫做稀疏矩阵:矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律,通常认为矩阵中非零元素的总数比上矩阵所有元素总数的值小于等于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;
}