Q:DNA排序

总时间限制:1000ms内存限制:65536kB

描述

给出一系列基因序列,由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

S:

#include <stdio.h>
struct DNA
{
char order[50];//基因序列
int num;//逆序对总数
} ;
int sum(char D[],int len);//子函数用于统计逆序对总数
int main()
{
struct DNA a[101],temp;
int n,m;//m个序列,长度即len为n
int i,j;
//freopen("2.in","r",stdin);
scanf("%d%d",&n,&m);
for(i=0;i<m;i++)
{
scanf("%s",a[i].order);
a[i].num=sum(a[i].order,n);
}
for(i=0;i<m-1;i++)
{
for(j=i;j>=0;j--)
{
if(a[j].num>a[j+1].num)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<m;i++)
{
puts(a[i].order);
}
return 0;
}
int sum(char D[],int len)//子函数用于统计逆序对总数
{
int i,j;
int all=0;
for(i=0;i<len-1;i++)
{
for(j=i+1;j<len;j++)
{
if(D[i]>D[j])
all++;
}
}
return all;
}

DNA排序的更多相关文章

  1. Openjudge计算概论-DNA排序

    /*===================================== DNA排序 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一系列基因序列,由A,C,G,T四种字符组 ...

  2. Openjudge-计算概论(A)-DNA排序

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

  3. 百炼OJ - 1007 - DNA排序

    题目链接:http://bailian.openjudge.cn/practice/1007 #include<stdio.h> #include<algorithm> usi ...

  4. Mathematics:DNA Sorting(POJ 1007)

    DNA排序 题目大意:给定多个ACGT序列,按照字母顺序算出逆序数,按逆序数从小到大排列 这题其实很简单,我们只要用一个归并排序算逆序数,然后快排就可以了(插入排序也可以,数据量不大),但是要注意的是 ...

  5. 使用qsort对结构体的数据排序

    1007 DNA 排序 题目大意: 序列“未排序程度”的一个计算方式是元素乱序的元素对个数.例如:在单词序列“DAABEC'”中,因为D大于右边四个单词,E大于C,所以计算结果为5.这种计算方法称为序 ...

  6. [POJ 1007] DNA Sorting C++解题

        DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 77786   Accepted: 31201 ...

  7. HMM基本原理及其实现(隐马尔科夫模型)

    HMM(隐马尔科夫模型)基本原理及其实现 HMM基本原理 Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程.马尔可夫链是时间和状态 ...

  8. PKU 1007

    题名:DNA排序 题意:给定字符串长度.个数,计算每个字符串的逆序数,然后从大到小排列,有兴趣的可以去看下原题. 计算字符串逆序数,然后排序,这里使用了快速排序算法,string释放的时候竟然有问题, ...

  9. [ML] Concept Learning

    Candidate Elimination Thanks for Sanketh Vedula. This is a good demo to understand candidate elimina ...

随机推荐

  1. nginx虚拟主机配置

    nginx虚拟主机配置   虚拟主机的概念虚拟主机,就是把一台物理服务器划分成多个"虚拟"的服务器,每一个虚拟主机都可以有独立的域名和独立的目录nginx虚拟主机的配置nginx的 ...

  2. cube定时器延时不准确原因

    昨天晚上测试32cube配置好定时器,以1ms为一次中断,然后在程序中做了一个1s的延时,结果发现实际延时5s左右,百思不得其解,仔细查看cube配置也没问题.最后我打开生成工程文件夹里面的ioc文件 ...

  3. JVM 内存

    大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) ,   VM Stack( ...

  4. JQuery text()、html() 以及 val()

    获得内容 - text().html() 以及 val() 三个简单实用的用于 DOM 操作的 jQuery 方法: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元 ...

  5. Linux 1

    1. 使用虚拟控制台  登录后按Alt+F2键这时又可以看到"login:"提示符, 这个就是第二个虚拟控制台. 一般新安装的Linux有四个虚拟控制台, 可以用Alt+F1~Al ...

  6. Yii 验证输入框是否输入的是数字

    在对应的Model文件的rules中加入如下代码: array('age,phone', 'numerical', 'integerOnly'=>true,'message'=>'{att ...

  7. 亲测!阿里云公共DNS,感觉不错!

    最近阿里推出了公共DNS,这对于普通的网友来说估计没什么用处,但对于我们建站人来说,确实是一个不错的消息.一听说阿里出公共DNS,博主就立马换电信的DNS换下了.经过这几天的测试,相当满意! 个人感觉 ...

  8. js获取手机联网状态

    window.addEventListener("offline", function() { alert('offline') }, false); window.addEven ...

  9. 0429 Scrum团队成立与第6-7章读后感

    Scrum团队成立: 团队名称:何首污大战污妖王 团队目标:每个人都尽可能的学到东西,共同进步. 团队口号:因为自信,所以成功! 团队照: 角色分配 产品负责人(梁毅乾): 决定开发内容和优先级排序, ...

  10. session如何保存在专门的StateServer服务器中

    session保存在专门的StateServer中,该种方式,性能损失比sql略好.比inproc据说有10%-15%的性能损失.怎么使用StateServer 服务器呢? 1.初始化StateSer ...