对于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain
rain
ain
in
n
然后对各子串按字典顺序排序,即:
ain,grain,in,n,rain
每个案例为一行字符串。
将子串排序输出
grain
ain grain in n rain
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//排序函数(二维字符串数组)
int compare(const void *a,const void *b){
return (strcmp((char*)a,(char*)b));
}
int main()
{
char s[100][100];
int i,len;
while(scanf("%s",s[0])!=EOF)
{
len=strlen(s[0]);
for(i=1;i<len;++i)
{
//将其后缀子串复制到s数组中
strcpy(s[i],s[0]+i);
}
qsort(s,len,100,compare);
for(i=0;i<len;++i)
printf("%s\n",s[i]);
}
return 0;
}
/**************************************************************
Problem: 1099
User: vhreal
Language: C
Result: Accepted
Time:0 ms
Memory:912 kb
****************************************************************/原文地址:http://blog.csdn.net/wtyvhreal/article/details/42342677