我是靠谱客的博主 淡然萝莉,最近开发中收集的这篇文章主要介绍[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

#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: 二维数组排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部