Description
对于一个字符串,将其后缀子串进行排序,例如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
思路:
题意就是将后缀子串按字典序从小到大排序输出。重点是怎么存储后缀子串,排序则用sort函数实现
#include<stdio.h>
#include<algorithm>
#include<string.h>
#define MAX 1005
using namespace std;
struct node{
char str[1000];
}ex[MAX];
bool compare(node x,node y)
{
return strcmp(x.str,y.str)<0?1:0;
}
int main()
{
char s[1000];
while(~scanf("%s",s))
{
memset(ex,0,sizeof(ex));
int len=strlen(s);
int n=0;
for(int i=len-1;i>=0;i--)
{
for(int j=i,k=0;j<len;j++,k++)
{
ex[n].str[k]=s[j];
}
n+=1;
}
sort(ex,ex+n,compare);
for(int i=0;i<n;i++)
{
printf("%s\n",ex[i].str);
}
}
return 0;
}