POJ 1007 DNA Sorting【求逆序数】
题意: 给你一个DNA序列,求其逆序数。
分析: 直接模拟即可。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<stdio.h> #include<string.h> #include<stdlib.h> struct node { int xu,ni; }q[101]; int cmp(const void*p1,const void*p2) { struct node* c=(node*)p1; struct node* d=(node*)p2; return c->ni-d->ni; } char s[102][55]; int n,m; int re(char *s) { int tot=0; int a,c,g,t,i; a=c=g=t=0; for(i=0;i<n;i++) { if(s[i]=='A') { a++; tot+=c; tot+=g; tot+=t; } else if(s[i]=='C') { c++; tot+=g; tot+=t; } else if(s[i]=='G') { g++; tot+=t; } else t++; } return tot; } int main() { int i,j; while(scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<m;i++) { scanf("%s",s[i]); q[i].xu=i; q[i].ni=re(s[i]); } qsort(q,m,sizeof(q[0]),cmp); for(i=0;i<m;i++) printf("%s\n",s[q[i].xu]); } return 0; }