zoukankan      html  css  js  c++  java
  • 稀疏矩阵转置

    #include<stdio.h>
    #define MAXSIZE 12500
    int num[MAXSIZE+1],cpot[MAXSIZE+1];
    typedef struct
    {
        int i,j;//非零元素的行号,列号
        int e;//非零元素的值
    }Triple;
    typedef struct
    {
        Triple data[MAXSIZE+1];//非零元素三元组,data[0]未用
        int mu,nu,tu;//矩阵的行数,列数,非零元素的个数
    }TSMatrix;
    
    TSMatrix TransposeSMatrix(TSMatrix M,TSMatrix T);
    TSMatrix CreatSMatrix(TSMatrix M);
    
    TSMatrix CreatSMatrix(TSMatrix M)
    {
        int p,q,k,a;
        M.tu=0,k=1;
        for( p=1;p<=M.mu;p++)
            for( q=1;q<=M.nu;q++)
            {
                scanf("%d",&a);
                if(a!=0)
                {
                    M.data[k].i=p;
                    M.data[k].j=q;
                    M.data[k].e=a;
                    k++;
                    M.tu++;
                }
             }
             return M;
    }
    TSMatrix TransposeSMatrix(TSMatrix M,TSMatrix T)
    {
        int col,t,p,q;
        T.mu=M.nu; T.nu=M.mu; T.tu=M.tu;
        if(T.tu)
        {
            for(col=1;col<=M.nu;++col) num[col]=0;
            for(t=1;t<=M.tu;t++)  ++num[M.data[t].j];
            cpot[1]=1;
            for(col=2;col<=M.tu;col++)  cpot[col]=cpot[col-1]+num[col-1];
            for(p=1;p<=M.tu;p++)
            {
                col=M.data[p].j;
                q=cpot[col];
                T.data[q].i=M.data[p].j;
                T.data[q].j=M.data[p].i;
                T.data[q].e=M.data[p].e;
                ++cpot[col];
            }
        }
        return T;
    }
    int main()
    {
        int k=1,p,q;
        TSMatrix M,T;
        scanf("%d%d",&M.mu,&M.nu);
        M=CreatSMatrix(M);
        T=TransposeSMatrix(M,T);
        for(p=1;p<=T.mu;p++)
        {
            for(q=1;q<=T.nu;q++)
            {
               if(T.data[k].i==p&&T.data[k].j==q)
               {
                    printf("%d ",T.data[k].e);
                    k++;
               }
               else
                    printf("0 ");
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    c语言变量的交换
    牛客网 多多的电子字典
    算法笔记----背包九讲 ③多重背包问题
    统计学习方法 课后习题第五章
    2020.8.2 19:00-21:00 拼多多算法岗笔试
    python构建模块
    leetcode 剑指 Offer 51. 数组中的逆序对
    pytorch的内部计算
    matplotlib
    矩阵微积分
  • 原文地址:https://www.cnblogs.com/yundong333/p/10716389.html
Copyright © 2011-2022 走看看