标签:
对于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain
rain
ain
in
n
然后对各子串按字典顺序排序,即:
ain,grain,in,n,rain
每个案例为一行字符串。
将子串排序输出
grain
ain grain in n rain
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <string> 5 #include <cmath> 6 #include <algorithm> 7 8 #define MAX 1002 9 using namespace std; 10 11 char temp[MAX]; 12 int num[MAX]; 13 14 int cmp(const void * a, const void *b) { 15 int at = *(int *)a; 16 int bt = *(int *)b; 17 return strcmp(&temp[at],&temp[bt]); 18 } 19 int main(int argc, char const *argv[]) 20 { 21 while(scanf("%s",temp) != EOF) { 22 int len = strlen(temp); 23 for(int i = 0; i < len; i++) { 24 num[i] = i; 25 } 26 qsort(num,len,sizeof(int),cmp); 27 for(int i = 0; i < len; i++) { 28 printf("%s\n", &temp[num[i]]); 29 } 30 } 31 return 0; 32 }
对位置进行排序,然后输出,真是越来越聪明了
标签:
原文地址:http://www.cnblogs.com/jasonJie/p/5697595.html