3347-数据结构实验之数组三:快速转置
2017-08-22 18:10
260 查看
数据结构实验之数组三:快速转置
Problem Description
转置运算是一种最简单的矩阵运算,对于一个m*n的矩阵M( 1 = < m < = 10000,1 = < n < = 10000 ),它的转置矩阵T是一个n*m的矩阵,且T( i , j )=M( j , i )。显然,一个稀疏矩阵的转置仍然是稀疏矩阵。你的任务是对给定一个m*n的稀疏矩阵( m , n < = 10000 ),求该矩阵的转置矩阵并输出。矩阵M和转置后的矩阵T如下图示例所示。稀疏矩阵M
0 14 0 0 -5
0 -7 0 0 0
36 0 0 28 0
稀疏矩阵T
0 0 36
14 -7 0
0 0 0
0 0 28
-5 0 0
Input
连续输入多组数据,每组数据的第一行是三个整数mu, nu, tu(tu <= 50),分别表示稀疏矩阵的行数、列数和矩阵中非零元素的个数,随后tu行输入稀疏矩阵的非零元素所在的行、列值和非零元素的值,同一行数据之间用空格间隔。(矩阵以行序为主序)Output
输出转置后的稀疏矩阵的三元组顺序表表示。Example Input
3 5 51 2 14
1 5 -5
2 2 -7
3 1 36
3 4 28
Example Output
1 3 362 1 14
2 2 -7
4 3 28
5 1 -5
注
起初,我做这个题目和做《3348-数据结构实验之数组二:稀疏矩阵》时的做法一样,用了二维数组,先把非零元素存起来,然后转换后输出,这样做交上去也是超时#include<stdio.h> #include<stdlib.h> #include<string.h> struct node { int a,b,c; }s[11111],t; int main() { int mu,nu,tu; int i,j,k; while(scanf("%d %d %d",&mu,&nu,&tu)!=EOF) { for(i=1;i<=tu;i++) scanf("%d%d %d",&s[i].a,&s[i].b,&s[i].c); for(i=1;i<tu;i++) { for(j=i+1;j<=tu;j++) { 4000 if(s[i].b>s[j].b)//把列按照从小到大的顺序排列 { t=s[j]; s[j]=s[i]; s[i]=t; } if(s[i].b==s[j].b)//在列相同的情况下 { if(s[i].a>s[j].a)//把行按照从小到大的顺序排列 { t=s[j]; s[j]=s[i]; s[i]=t; } } } } for(i=1;i<=tu;i++) printf("%d %d %d\n",s[i].b,s[i].a,s[i].c);//按照先输出列再输出行再输出元素的格式输出 } return 0; }
注
用结构体数组来存放输入的行、列、非零元素并且把列按 从小到大的顺序排序,在列相同的情况下,把行按从小到大的顺序排序,然后再按照先输出行再输出列再输出元素。
超时代吗
#include<stdio.h> #include<stdlib.h> #include<string.h> int vis[10001][10001]; int main() { int mu,nu,tu; int i,j,k; int p,q,s; memset(vis,0,sizeof(vis)); while(scanf("%d %d%d",&mu,&nu,&tu)) { for(i=1;i<=tu;i++) { scanf("%d %d %d",&p,&q,&s); vis[p][q]=s; } for(i=1;i<=nu;i++) { for(j=1;j<=mu;j++) { if(vis[j][i]!=0)//输出时行列转换 printf("%d %d %d\n",i,j,vis[j][i]); } } } return 0; }
相关文章推荐
- SDUT 3347 数据结构实验之数组三:快速转置
- SDUTOJ(3347) 数据结构实验之数组三:快速转置
- 3347 数据结构实验之数组三:快速转置
- SDUT 3347 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- sdutacm-数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置
- 数据结构实验之数组三:快速转置