九度OJ 1099:后缀子串排序 (排序)
2015-10-23 09:24
225 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:3439
解决:1491
题目描述:
对于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain
rain
ain
in
n
然后对各子串按字典顺序排序,即:
ain,grain,in,n,rain
输入:
每个案例为一行字符串。
输出:
将子串排序输出
样例输入:
样例输出:
来源:2010年上海交通大学计算机研究生机试真题
思路:
可以将字符串分解后拷贝到一个字符串数组中,然后快速排序。
但拷贝过程实际上可以避免,考虑设置一个指针数组,分别指向字符串的不同位置,对指针数组进行排序即可。
该题对时间要求不高,暂时并未实现后一种方法。
代码:
内存限制:32 兆
特殊判题:否
提交:3439
解决:1491
题目描述:
对于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain
rain
ain
in
n
然后对各子串按字典顺序排序,即:
ain,grain,in,n,rain
输入:
每个案例为一行字符串。
输出:
将子串排序输出
样例输入:
grain
样例输出:
ain grain in n rain
来源:2010年上海交通大学计算机研究生机试真题
思路:
可以将字符串分解后拷贝到一个字符串数组中,然后快速排序。
但拷贝过程实际上可以避免,考虑设置一个指针数组,分别指向字符串的不同位置,对指针数组进行排序即可。
该题对时间要求不高,暂时并未实现后一种方法。
代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 1000 int cmp(const void *a, const void *b) { return strcmp((char *)a, (char *)b); } int main(void) { int i, j, k, n; char s ; while (scanf("%s", s[0]) != EOF) { n = strlen(s[0]); for(i=1; s[0][i]; i++) { k = 0; for(j=i; s[0][j]; j++) s[i][k++] = s[0][j]; s[i][k] = '\0'; } qsort(s, n, sizeof(s[0]), cmp); for(i=0; i<n; i++) printf("%s\n", s[i]); } return 0; } /************************************************************** Problem: 1099 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:1824 kb ****************************************************************/
相关文章推荐
- LoadRunner性能测试执行过程的问题
- 九度OJ 1099:后缀子串排序 (排序)
- PE安装原版XP系统(含高版本PE安装选项灰色处理办法)
- 第6周项目5 后缀表达式
- android studio 打包webview 5.0文件上传问题
- Java基本数据类型
- AFNetworking 3.0迁移指南
- Hadoop--ZooKeeper
- 命令行解决Git冲突
- 停车场模拟
- android里面播放声音的方法---执行某项操作发出滴的一声
- LeetCode47——Permutations II
- 作業系統之前的程式 for stm32f4 - discovery (0.2) - p103 模擬器
- 深入理解Loadrunner中的Browser Emulation
- loadrunner获取本机的机器名称
- 第12章 并发程序的测试
- 清理DNS缓存
- 第8周项目3顺序串算法
- Linux下Android开发资源下载
- java开源微博系统weibo4j分享