标签:
对于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain
rain
ain
in
n
然后对各子串按字典顺序排序,即:
ain,grain,in,n,rain
每个案例为一行字符串。
将子串排序输出
grain
ain grain in n rain
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int MAXN=10005; char s[MAXN]; int order[MAXN]; int len; bool comp(int x,int y) { while(x<len&&y<len) { if(s[x]==s[y]) { x++; y++; } else { return s[x]<s[y]; } } return x>y; } int main() { while(scanf("%s",s)!=EOF) { len=strlen(s); for(int i=0;i<len;i++) order[i]=i; sort(order,order+len,comp); for(int i=0;i<len;i++) { for(int j=order[i];j<len;j++) { printf("%c",s[j]); } printf("\n"); } } return 0; }
标签:
原文地址:http://www.cnblogs.com/program-ccc/p/5372947.html