DNA排序
首先求出逆序数,然后对逆序数进行排队,最后输出排序后的DNA序列。对于求逆序数,只需对序列进行遍历,找出本应出现在某字符之后,却出现在了它之前的字符数即可。
#include #include #include #include int main() { int n,m,i,j,k,s[150]= {0}; char str[150][60],p[60]; scanf("%d%d",&n,&m); for(i=0; i<m; i++) { scanf("%s",&str[i]); for(j=0; j<n-1; j++) for(k=j+1; k<n; k++) if(str[i][k]<str[i][j]) s[i]++; } for(i=0; i<m-1; i++) for(j=i+1; j<m; j++) if(s[i]>s[j]) { strcpy(p,str[i]); strcpy(str[i],str[j]); strcpy(str[j],p); k=s[i]; s[i]=s[j]; s[j]=k; for(k=0; k<60; k++) p[k]=0; } for(i=0; i<m; i++) printf("%s\n",str[i]); return 0; }