zoukankan      html  css  js  c++  java
  • Openjudge-计算概论(A)-DNA排序

    描述:

    给出一系列基因序列,由A,C,G,T四种字符组成。对于每一个序列,定义其逆序对如下: 
    序列中任意一对字符X和Y,若Y在X的右边(不一定相邻)且Y < X,则称X和Y为一个逆序对。 
    例如GAC这个序列,其中GC,GA都是逆序对。 

    一个序列的逆序对越多,则认为其"无序度"越高。你的任务是将基因按照无序度从小到大的顺序排序,如果存在无序度相同的序列,则按照原始输入顺序输出。

    输入首先是基因序列的长度n(0 < n <= 50)和基因序列的个数m ( 0 < m <= 100).
    然后依次是这m个基因序列.输出输出排序后的m个基因序列。

    样例输入

    10 6
    AACATGAAGG
    TTTTGGCCAA
    TTTGGCCAAA
    GATCAGATTT
    CCCGGGGGGA
    ATCGATGCAT

    样例输出

    CCCGGGGGGA
    AACATGAAGG
    GATCAGATTT
    ATCGATGCAT
    TTTTGGCCAA
    TTTGGCCAAA
    思路:用结构体,统计每个字符串的逆序对个数,排序,输出即可。
    代码如下(本代码来自我的老师:http://www.cnblogs.com/huashanqingzhu/p/3575491.html):
     1 #include<stdio.h>
     2 struct DNA
     3 {
     4     char a[50];//一个基因序列 
     5     int num;//本基因序列的逆序对个数 
     6 };
     7 int niXuDui(struct DNA d,int len);//统计DNA序列变量d的逆序对个数 
     8 int main()
     9 {
    10     struct DNA  d[100],t;
    11     int n,m,i,j,flag;
    12     scanf("%d%d",&n,&m);
    13     for(i=0;i<m;i++)
    14     {
    15         scanf("%s",d[i].a);
    16         d[i].num=niXuDui(d[i],n);
    17     }   
    18     for(i=1;i<m;i++)
    19     {
    20         flag=1;
    21         for(j=0;j<m-i;j++) 
    22         {
    23             if(d[j].num>d[j+1].num)//选择排序 
    24             {
    25                 flag=0;
    26                 t=d[j];
    27                 d[j]=d[j+1];
    28                 d[j+1]=t;
    29             }
    30         }
    31         if(flag) break; //if(flag==1) break;
    32     }
    33     for(i=0;i<m;i++)
    34     {
    35         printf("%s
    ",d[i].a);
    36     }
    37     return 0;
    38 }
    39 int niXuDui(struct DNA d,int len)//统计DNA序列变量d的逆序对个数 
    40 {
    41     int ans=0,i,j;
    42     for(i=0;i<len;i++)//从前到尾慢慢扫 
    43     {
    44         for(j=i+1;j<len;j++)//两重循环,不多 
    45         {
    46             if(d.a[j]<d.a[i]) ans++;
    47         }
    48     }
    49     return ans;
    50 }
    我不怕千万人阻挡,只怕自己投降…
  • 相关阅读:
    Nucleus 的网络部分
    VS2005中TextBox的ReadOnly属性(转贴)
    VS2005中TextBox的ReadOnly属性导致的问题
    外部中断
    Linux操作系统文件链接问题
    IIS 服务不能自动启动
    转贴:[C++]static用法
    串口测试的一些体会
    字符串的两种声明方式
    Tornado 2.2 中vxsim出问题的解决方法
  • 原文地址:https://www.cnblogs.com/geek-007/p/4296734.html
Copyright © 2011-2022 走看看