矩阵转置算法二

2014-11-24 00:33:32 · 作者: · 浏览: 3
这个算法比较快的原因是提前存贮了所有转置后的第一个非0元素所在的位置,存储的时候可以直接对号放入,所以比n*m的要快。关键是看怎么存储的。
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
using namespace std;  
#define maxsize 2000  
struct triple{  
    int x,y,data;  
};  
struct matrix{  
    triple ko[maxsize];  
    int hang,lie,total;  
};  
int num[maxsize],pos[maxsize];  
int main()  
{  
    matrix N,M;  
    int i;  
    while(cin>>N.hang>>N.lie>>N.total)  
    {  
        if(N.total==0)  
            break;  
        for(i=1;i<=N.lie;i++)  
            num[i]=0;  
        for(i=1;i<=N.total;i++)  
        {  
            cin>
>N.ko[i].x>>N.ko[i].y>>N.ko[i].data; num[N.ko[i].y]+=1; } cout<