1668: 数组-稀疏矩阵转置
金币值:2
定数:8
时间限制:1.000 s
内存限制:128 M
正确:5
提交:11
正确率:45.45% 命题人:
题目描述
实现三元组表示的稀疏矩阵的转置操作。
#include <stdio.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct {
int i, j;//非零元素的行、列,均以1为起点
ElemType e;//非零元素值
} SPNode;
typedef struct {
SPNode data[MAXSIZE+1];//data[0]未用
int rn, cn, tn;
} SPMatrix;
void createSMatrix(SPMatrix &M);
void transSMtrix(SPMatrix M, SPMatrix &T);
void printSMatrix(SPMatrix M);
int main(void) {
SPMatrix M,T;
createSMatrix(M);
transSMtrix(M,T);
printSMatrix(T);
return 0;
}
void createSMatrix(SPMatrix &M) {
int i,m,n;
ElemType e;
scanf("%d%d%d",&M.rn,&M.cn,&M.tn);
for(i=1; i<=M.tn; i++) {
scanf("%d%d%d",&m,&n,&e);
M.data[i].i=m;
M.data[i].j=n;
M.data[i].e=e;
}
}
/*以下为你的代码*/ 输入格式
第1行:3个数字,分别表示矩阵的行数rn、列数cn和非0元素的个数tn
从第2行开始是tn行的三元组(行,列,值),从左往右,从上往下。
从第2行开始是tn行的三元组(行,列,值),从左往右,从上往下。
输出格式
以矩阵的形式显示转置后的三元组表T。
输入样例 复制
7 8 9
1 2 12
1 3 9
3 1 -3
3 8 4
4 3 24
4 6 2
5 2 18
6 7 -7
7 4 -6
输出样例 复制
0 0 -3 0 0 0 0
12 0 0 0 18 0 0
9 0 0 24 0 0 0
0 0 0 0 0 0 -6
0 0 0 0 0 0 0
0 0 0 2 0 0 0
0 0 0 0 0 -7 0
0 0 4 0 0 0 0
提示
输出格式:printf("%3d",x);