我是靠谱客的博主 淡然萝莉,这篇文章主要介绍[GDUT]:1059: 二维数组排序,现在分享给大家,希望可以做个参考。

1059: 二维数组排序
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 30 Solved: 18
Description
BMan进入ACM集训队学会了排序算法后,曾经高兴得几天睡不着觉,但是昨天sfire大神随口一句“二维数组排序你会么”直接把BMan吓傻了,原来还有这么神奇的算法。BMan苦思冥想不得结果,只好求救于你。你现在要来帮他解决这个问题,并且教训他:你还太年轻了。
一个n*m,n行m列的二维数组是怎样排序的呢?我们规定排序后的二维数组应该有这样的性质:1.每一行中相邻两个数中,前面的数小于或等于后面的数,即对任意的1<=i<=n,有a[i][j]<=a[i][j+1]。2.每行最后一个数小于或等于下一行的第一个数,即对任意的1<=i

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<stdio.h> int main() { int t; while(scanf("%d", &t)!=EOF){ int i, m, n, k, temp, a, b, d; for(i=0; i<t; i++){ int str[20][20], num[400]; scanf("%d%d", &n, &m); for(k=0; k<m*n; k++){ scanf("%d", &num[k]); }//存入m*n个数 for(k=0; k<m*n; k++){ for(d=k+1; d<m*n; d++){ if(num[k]>num[d]){ temp = num[k]; num[k] = num[d]; num[d] = temp; } } }//将输入的m*n个数按从小到大排序 k=0; for(a=0; a<n; a++){ for(b=0; b<m; b++){ str[a][b] = num[k]; printf("%d", str[a][b]); k++; if(b!=(m-1)){ printf(" "); } else{ printf("n"); } } }//按照n*m矩阵排列 } } return 0; }

这里写图片描述

最后

以上就是淡然萝莉最近收集整理的关于[GDUT]:1059: 二维数组排序的全部内容,更多相关[GDUT]:1059:内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部