OpenJudge计算概论-字符串排序

简介: /*====================================================================== 字符串排序 总时间限制: 1000ms 内存限制: 65536kB 描述 参考整数排序方法,设计一种为字符串排序的算法,将字符串从小到大输出 输入 第一行为测试数据组数t, 后面跟着t组数据。
/*======================================================================
字符串排序
总时间限制: 1000ms 内存限制: 65536kB
描述
参考整数排序方法,设计一种为字符串排序的算法,将字符串从小到大输出
输入
第一行为测试数据组数t, 后面跟着t组数据。每组数据第一行是n,表示这组数据有n行字符串,接下来是要排序的n行字符串。每行字符串的字符个数不会大于200, n < 100。
输出
对于每组数据,输出排好序的字符串,每组输出后要多输出一个空行
样例输入
2
2
Hello
World
4
I
Love
C
Language!
样例输出
Hello
World

C
I
Language!
Love


思路:
对t组数据的每一组,可以输入整组数据到二维的char数组(注意:二维的char数组的a[i]相当于第i行的首地址,所以可以gets(a[i]))
输入一组数据后对其排序,可以考虑用任何一种排序,下面代码使用选择排序。 ========================================================================
*/
 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     int t,n;
 6     int k,i,j,m;
 7     char a[101][201],temp[201];
 8     freopen("5.in","r",stdin);
 9     //freopen("result.out","w",stdout);
10     scanf("%d",&t);
11     for(k=0;k<t;k++)
12     {
13         scanf("%d",&n);
14         getchar();//接收上一行scanf的回车符 
15         for(i=0;i<n;i++)
16             gets(a[i]);//scanf("%s",a[i]);无法接收含有空格的字符串,所以这个题用scanf会Wrong Answer。 
17         //下面是选择排序
18         for(i=0;i<n-1;i++)
19         {
20             m=i;
21             for(j=i+1;j<n;j++)
22             {
23                 if(strcmp(a[j],a[m])<0)
24                 {
25                     m=j;
26                 }
27             }
28             if(i!=m)//这里交换两行字符串
29             {
30                 strcpy(temp,a[i]);
31                 strcpy(a[i],a[m]);
32                 strcpy(a[m],temp);
33             }
34         }
35         //下面输出结果
36         for(i=0;i<n;i++)
37             printf("%s\n",a[i]);
38         if(k!=t-1) printf("\n");/**/
39     }
40     return 0;
41 }

 

相关文章
Openjudge计算概论-单词翻转
/*===================================== 单词翻转 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个句子(一行),将句子中的每一个单词翻转后输出 输入 只有一行,为一个字符串,不超过500个字符。
828 0
|
存储 Java
Openjudge计算概论-DNA排序
/*===================================== DNA排序 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一系列基因序列,由A,C,G,T四种字符组成。
984 0
OpenJudge计算概论-字符串最大跨距
/*====================================================================== 字符串最大跨距 总时间限制: 1000ms 内存限制: 65536kB 描述 有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10,想检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在 S中互不交叉(即,S1的右边界点在S2的左边界点的左侧)。
1354 0
|
人工智能 Go
OpenJudge计算概论-单词排序
/*===================================== 单词排序 总时间限制:1000ms 内存限制: 65536kB 描述 输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字母顺序输出这些单词(即按照字符串中字母的ASCII码排序,区分大小写,当首字母相同时,比较第2个字母,依次类推),要求重复的单词只输出一次。
905 0
|
存储 人工智能 算法
Openjudge计算概论-求序列中的众数
/*===================================== 求序列中的众数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个长度为N的整数序列 (不多于128个整数),每个整数的范围在[-10^52,10^52],计算这个序列的众数。
1026 0
|
人工智能
OpenJudge计算概论-二维数组右上左下遍历
/*====================================================================== 二维数组右上左下遍历 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组。
994 0
|
存储 人工智能
OpenJudge计算概论-找最大数序列
/*===================================== 找最大数序列 总时间限制: 1000ms 内存限制: 65536kB 描述 输入n行(n 不大于 30),每行不超过100个无符号整数,无符号数不超过4位。
1303 0
|
人工智能
Openjudge计算概论-奇数单增序列
/*===================================== 奇数单增序列 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按增序输出。
1114 0
|
人工智能
OpenJudge计算概论-整数奇偶排序
/*===================================== 整数奇偶排序 总时间限制: 1000ms 内存限制: 65536kB 描述 输入10个整数,彼此以空格分隔 重新排序以后输出(也按空格分隔),要求: 1.先输出其中的奇数,并按从大到小排列; 2.然后输出其中的偶数,并按从小到大排列。
1049 0
|
C++ CDN 机器学习/深度学习
OpenJudge计算概论-完美立方【暂时就想到了枚举法了】
/*===================================== 完美立方 总时间限制: 1000ms 内存限制: 65536kB 描述 a的立方 = b的立方 + c的立方 + d的立方为完美立方等式。
849 0