SDUSTOJ 1334
来源:互联网 发布:语音同声翻译软件 编辑:程序博客网 时间:2024/06/06 14:29
题目
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
10
abc
bc
aca
ca
c
aac
aba
bc
da
ba
Sample Output
aac
aba
abc
aca
ba
bc
bc
c
ca
da
HINT
用二维数组很难一次性分配出这么大的空间了,要用到根据输入变化的动态分配的内存才行。这里需要动态的数据结构,比如,字符指针的数组“char * s[]”,或者是二维的字符指针“char **s”,等等。
AC代码
#include <stdio.h>#include <string.h>#include <stdlib.h>#define maxn 100000 + 100char str[maxn];int cmp(const void * a, const void * b);int main(){ int n; while( ~scanf("%d", &n) ){ getchar(); char **tmp; tmp = (char **)malloc(sizeof(char *) * (n + 10)); for(int i = 0; i < n; i++) { gets(str); int len = strlen(str) + 1; tmp[i] = (char *) malloc(sizeof(char) * (len + 10)); strcpy(tmp[i], str); memset(str, 0, sizeof(str)); } qsort(tmp, n, sizeof(char *), cmp); for(int i = 0; i < n; i++) puts(tmp[i]); free(tmp); } return 0;}int cmp(const void * a, const void * b){ return strcmp(*(char**)a, *(char**)b);}
阅读全文
0 0
- SDUSTOJ 1334
- SDUSTOJ
- SDUSTOJ
- SDUSTOJ 1466
- SDUSTOJ 1184
- SDUSTOJ T1581 Average Number
- SDUSTOJ T1587 YES! YOU CAN!
- [SDUSTOJ 1450]捡石子游戏
- SDUSTOJ-说好的点呢
- SDUSTOJ Problem F: 一元二次方程类
- SDUSTOJ Problem D: 时间类的构造和输出
- SDUSTOJ Problem E: 时间类的成员读写
- SDUSTOJ Problem H: 稀疏矩阵的表示和运算
- Problem H: 稀疏矩阵的表示和运算 SDUSTOJ
- SDUSTOJ Problem A: 平面上的点——Point类 (I)
- SDUSTOJ Problem A: 平面上的点——Point类 (I)
- SDUSTOJ Problem B: 平面上的点——Point类 (II)
- SDUSTOJ Problem C: 平面上的点——Point类 (III)
- nowcoder 2017年浙江工业大学大学生程序设计迎新赛预赛-CC的神奇背包
- Intellij IDEA 开启自动构建项目并显示 Problems 窗口的方法
- easyui动态合并单元格
- C语言实验——大小写转换
- [DevOps]如何用VSTS持续集成到Github仓库!
- SDUSTOJ 1334
- QQ互联-申请-连接
- 二维数组的指针
- Appium环境搭建--端口占用和adb版本兼容问题
- 2015年蓝桥杯JavaB组五星填数
- JAVA高级面试总结-JVM篇
- 一起艳学Springboot开发微信公众号(二)
- 字符串全排列 全排列整理
- Python实例2-获取某文件夹下指定类型的图片名,完成图片格式的转换并保存