m个长度为n的DNA序列,把他们按照逆序数从小到大稳定排序输出。
解题思路:
先求各个字符串的逆序数,然后有两个思路,一是按逆序数对字符串快排,如http://blog.csdn.net/lyy289065406/article/details/6647305
第二个思路是只需要按逆序数从小到大输出就好了,不需要对字符串排序,省下了排序的时间
#include<stdio.h>
int main(void)
{
int len,raw,i,j,k;
scanf("%d %d",&len,&raw);
char str[raw][len+1];
int flag[raw],max=0;
for(i=0;i<raw;i++)flag[i]=0;
for(i=0;i<raw;i++)
{
scanf("%s",str[i]);
for(j=0;j<len-1;j++)
for(k=j+1;k<len;k++)
{
if(str[i][j]>str[i][k])flag[i]++;
}
if(max<flag[i])max=flag[i];
}
for(i=0;i<=max;i++)
{
for(j=0;j<raw;j++)
{
if(flag[j]==i)
printf("%s\n",str[j]);
}
}
return 0;
}