-
对于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain
rain
ain
in
n然后对各子串按字典顺序排序,即:
ain,grain,in,n,rain
链接
http://ac.jobdu.com/problem.php?pid=1099
题目描述:
-
输入:
-
每个案例为一行字符串。
-
输出:
-
将子串排序输出
-
样例输入:
-
grain
-
样例输出:
-
ain grain in n
rain
-
-
先将字符串切分好后存储到一个字符串数组中,然后用快排排序后输出即可。
-
这题的考察点在使用qsort:数组元素的大小以及排序数组的个数都可设置,注意比较函数的参数类型要求是const void *,const void *
-
-
ac代码
-
#include <iostream>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std;
char c[1000];
char a[1000][1000];
int cmp(const void* a,const void *b);
int main()
{
while(cin >> c)
{
strcpy(a[0],c);
int len = strlen(a[0]);
for(int i=1;i<len;i++)
strcpy(a[i],a[0]+i);
qsort(a,len,sizeof(a[0]),cmp);
for(int i=0;i<len;i++)
cout << a[i] << endl;
}
return 0;
}
int cmp(const void* a,const void *b)
{
return strcmp((char*)a,(char*)b);
}