首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

9度OJ 题目1099:后缀子串排序

2013-02-19 
九度OJ 题目1099:后缀子串排序题目1099:后缀子串排序时间限制:1 秒内存限制:32 兆特殊判题:否提交:1224解

九度OJ 题目1099:后缀子串排序

题目1099:后缀子串排序

时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:1224

解决:481

题目描述:

对于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain 
rain 
ain 
in 
n

然后对各子串按字典顺序排序,即: 
ain,grain,in,n,rain

输入:

每个案例为一行字符串。

输出:

将子串排序输出

样例输入:
grain
样例输出:
aingraininnrain
来源:
2010年上海交通大学计算机研究生机试真题
/**********************************   日期:2013-2-13*   作者:SJF0115*   题号: 九度OJ 题目1099:后缀子串排序*   来源:http://ac.jobdu.com/problem.php?pid=1099*   结果:AC*   来源:2010年上海交通大学计算机研究生机试真题*   总结:**********************************/#include<stdio.h>#include<stdlib.h>#include<string.h>//排序函数(二维字符串数组)int cmp(const void *a,const void *b){return (strcmp((char*)a,(char*)b));}char str[1000][1000];char word[1000];int main(){int i,len;//freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);while(scanf("%s",word) != EOF){len = strlen(word);for(i = 0;i < len;i++){//将其后缀子串复制到str数组中strcpy(str[i],word+i);}//排序qsort(str,len,sizeof(str[0]),cmp);//输出for(i = 0;i < len;i++){puts(str[i]);}}return 0;}
转载
#include <set>#include <iostream>#include <string>using namespace std;int main(){    string str;    while(cin >> str)    {        set<string> s;        s.insert(str);        while(str.size()>1)        {            str = str.substr(1);            s.insert(str);        }        set<string>::iterator it;        for(it=s.begin(); it!=s.end(); it++)            cout << *it << endl;    }    return 0;}

#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;int main(){        string ss;        while(getline(cin,ss))        {                int i;                vector<string> vv(ss.size());                for(i = 0;i < ss.size();i++)                        vv[i] = ss.substr(i);                sort(vv.begin(),vv.end());                for(i = 0;i < vv.size();i++)                        cout << vv[i] << endl;        }        return 0;}


热点排行