反转后的字符串排序
发布时间: 2018年3月20日 21:35 最后更新: 2018年3月21日 00:33 时间限制: 1000ms 内存限制: 128M
输入n个字符串,对这n个字符串(按反转后字典序)排序并输出。例如两个字符串为“aab”, “cba”,则“cba”应该排在“aab”之前,因为“cba”反转后为“abc”,”aab”反转后为”baa”。
第一行为一个整数n,表示字符串的数目。(0<n<50)
接下来是n行,每行一个字符串,其中字符串仅由小写字母组成,每个字符串长度不超过100,所有字符串均不相同。
排完序以后的字符串,每个字符串占一行。
6 cpp class object stl acm bjfu
stl acm cpp class object bjfu
字典序:对于字符串,先按首字符排序,如果首字符相同,再按第二个字符排序,以此类推。如aa,ab,ba就是一个字典序。
#include<cstdio> #include<cstring> int main() { int n; scanf("%d", &n); int i, j; char s[55][110], pos[110]; for (i = 0; i<n; i++) { int k = 0; scanf("%s", pos); for (j = strlen(pos) - 1; j >= 0; j--) s[i][k++] = pos[j]; s[i][k] = ‘\0‘; } for (i = 0; i<n - 1; i++) for (j = i + 1; j<n; j++) if (strcmp(s[i], s[j])>0) { strcpy(pos, s[i]); strcpy(s[i], s[j]); strcpy(s[j], pos); } for (i = 0; i<n; i++) { for (j = strlen(s[i]) - 1; j >= 0; j--) printf("%c", s[i][j]); printf("\n"); } return 0; }
2018-04-02