根据DNA的逆序数来排序,挺简单。
用c写的,都快忘了qsort的cmp写法了。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
int m;
char s[105];
}part;
part ans[105];
int cmp(const void*a, const void*b)
{
return (*(part *)a).m - (*(part *)b).m;
}
int main()
{
int n, m, p = 0;
scanf("%d%d", &n, &m);
for(int i = 0; i < m; i++)
{
char s[105];
int un = 0;
scanf("%s", s);
//len = strlen(s);
for(int j = 0; j < n - 1; j++)
for (int k = j + 1; k < n; k++)
{
if (s[k] < s[j])
un++;
}
ans[p].m = un;
strcpy(ans[p++].s, s);
}
qsort(ans, m, sizeof(part), cmp);
for (int i = 0; i < m; i++)
printf("%s\n", ans[i].s);
return 0;
}