对于一个字符串,将其后缀子串进行排序,例如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