zcmu 4922: 后缀子串排序
Time Limit: 1 Sec Memory Limit: 32 MB
对于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain
rain
ain
in
n
然后对各子串按字典顺序排序,即:
ain,grain,in,n,rain
Input
每个案例为一行字符串。
Output
将子串排序输出
Sample Input
grain
banana
Sample Output
ain
grain
in
n
rain
a
ana
anana
banana
na
nana
HINT
Source
数据结构高分笔记
代码~:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
char str[1005];
struct word
{
char a[1005];
};
bool cmp(word x,word y)
{
return strcmp(x.a,y.a)<0;
}
int main()
{
while(~scanf("%s",str))
{
int l = strlen(str);
struct word date[l+2];
char *p = str;
for(int i = 0; i < l; i++)
{
strcpy(date[i].a,p);//用的是字符指针指向的地址,不要写成用*p;
p++;
}
sort(date,date+l,cmp);
for(int i = 0; i < l; i++)
{
printf("%s\n",date[i].a);
}
}
return 0;
}