POJ1007 DNA Sorting(求逆序数)

来源:互联网 发布:新浪微博加粉丝软件 编辑:程序博客网 时间:2024/05/21 07:56
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m;struct DNA{    int num;    char sq[55];}dna[110];int cmp(DNA a,DNA b){    if(a.num==b.num) return 0;    return a.num<b.num;}int solve(int i){    int ans=0;    int A,C,G;    A=C=G=0;    for(int j=n-1;j>=0;j--)    {        if(dna[i].sq[j]=='A')        {            A++;        }        else if(dna[i].sq[j]=='C')        {            C++;            ans+=A;        }        else if(dna[i].sq[j]=='G')        {            G++;            ans+=A+C;        }        else if(dna[i].sq[j]=='T')        {            ans+=A+C+G;        }    }    return ans;}int main(){    //freopen("d:\\test.txt","r",stdin);    scanf("%d%d",&n,&m);    for(int i=0;i<m;i++)    {        scanf("%s",dna[i].sq);        dna[i].num=solve(i);    }    sort(dna,dna+m,cmp);    for(int i=0;i<m;i++)    {        cout<<dna[i].sq<<endl;    }    return 0;}

0 0