poj1007 按逆序数排序DNA串

输入m组字符串 按逆序数排列输出

#include 
#include 
#include
#include 
using namespace std;
int n,m;

typedef class DNA{
public:
    int num;
    char s[110];
}dna;


int invernum(char *s,int len)
{

        int ans=0;
        int A,C,G;
        A=C=G=0;
        for(int i= len-1;i>=0;i--)
          {
            switch(s[i])
            {
            case 'A' :
              {
                A++;//A是最小的,无逆序数
                break;
              }
            case 'C':
               {
                C++;
                ans+=A;
                break;
               }
            case 'G':
                {
                G++;
                ans+=(A+C);
                break;
                }
            case 'T':
                {
                ans+=(A+C+G);
                break;
                }
            }
          }

        return ans;
}

int cmp(const void*a,const void*b)
{
    dna* x=(dna*)a;
    dna* y=(dna*)b;
    return (x->num)-(y->num);
}

int main()
{
    freopen("in.txt","r",stdin);
    scanf("%d%d",&n,&m);
    dna* str=new dna[m];
    for(int i=0; i>str[i].s;
       str[i].num=invernum(str[i].s,n);
    }
    qsort(str,m,sizeof(dna),cmp);
    for(int j=0;j


你可能感兴趣的:(ACM初)