Time Limit: 5 Sec Memory Limit: 128 MB
Submit: 11171 Solved: 3405
[Submit][Status]
Description
把字符串按照ASCII码序的从小到大排列出来。
串的ASCII码序遵循如下递归定义:
1 两串的前n-1个字符相同,第n个字符ASCII码序小的排在前面;
2 只有两串的字符完全相同时,才有两串相等。
字符的ASCII码序比较可以用strcmp()函数完成。
Input
第一行输入为一个整数N(N<=50,000),后接N行,每行一个字符串,串长不超过100,000。
Output
输出为N行,按照字符串的ASCII码序排列,ASCII码序小的排前面。
Sample Input
Sample Output
HINT
Append Code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
char
a[100005];
int
main()
{
int
n,i,j,len;
char
*t;
scanf
(
"%d"
,&n);
getchar
();
char
*p[n+1];
for
(i=0;i<n;i++)
{
gets
(a);
len=
strlen
(a);
p[i]=(
char
*)
malloc
(
sizeof
(
char
)*(len+1));
strcpy
(p[i],a);
}
for
(j=1;j<=n-1;j++)
{
for
(i=0;i<n-j;i++)
{
if
(
strcmp
(p[i],p[i+1])>0)
{
t=p[i];
p[i]=p[i+1];
p[i+1]=t;
}
}
}
for
(i=0;i<n;i++)
puts
(p[i]);
for
(i=0;i<n;i++)
free
(p[i]);
return
0;
}