问题描述:

逆序数可以用来描述一个序列混乱程度的量。例如,“DAABEC”的逆序数为5,其中D大于它右边的4个数·,E大于它右边的1的个数,4+1=5,又如,“ZWQM”的逆序数为3+2+1+0=6.现在有许多长度一样的字符串,每个字符串里面只会出现四种字母(A,T,C,G)。要求编写程序,将这些字符串按照它们的逆序数进行排序

输入:

第一行包括两个正整数,第一个表示字符串长度,第二表示字符串数量

输出:

将每个字符串按照其逆序数进行排序,如果两个字符串的逆序数相等,则按照输入中的两者的先后顺序进行排列

样列输入:

10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT输出:

CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA

 #include <stdio.h>
#include <string.h>
struct node
{
int key; // key 存原字符串的编号
char str[];
}dna[];
int s(char str[])
{
int sum=,i,j;
int len=strlen(str);
int sd[]={};
for(i=;i<len-;i++)
{
for(j=i+;j<len;j++)
{
if(str[i]>str[j]) sd[i]++;
}
} for(i=;i<len;i++) sum=sum+sd[i];
return sum;
} void sort(int res[],int m)//简单的一个排序
{
int i,j,t;
for(i=;i<m;i++)
for(j=i+;j<m;j++)
if(res[i]>res[j])
{
t=res[i];
res[i]=res[j];
res[j]=t;
}
} int main(void)
{
int n,m,i,j;
int res[];
scanf("%d %d",&n,&m);
if(n> && n<= && m> && m<=)
{
for(i=;i<m;i++)
scanf("%s",&dna[i].str);
for(i=;i<m;i++)
{
res[i]=s(dna[i].str);
dna[i].key=res[i];
}
sort(res,m);
for(i=;i<m;i++)
for(j=;j<m;j++)
{
if(dna[j].key==res[i] )
{
printf("%s\n",dna[j].str);
dna[j].key=;/*就是这个地方。。。原本是赋的0,那样逆序度为0 的情况就会有问题*/
}
}
}
return ;
}

1104--DNA排序的更多相关文章

  1. DNA排序

    Q:DNA排序 总时间限制:1000ms内存限制:65536kB 描述 给出一系列基因序列,由A,C,G,T四种字符组成.对于每一个序列,定义其逆序对如下: 序列中任意一对字符X和Y,若Y在X的右边( ...

  2. Openjudge计算概论-DNA排序

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

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

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

  4. 百炼OJ - 1007 - DNA排序

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

  5. Mathematics:DNA Sorting(POJ 1007)

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

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

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

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

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

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

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

  9. PKU 1007

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

  10. [ML] Concept Learning

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

随机推荐

  1. 今天研究了下webservice 终于OK了

    今天研究了下webservice 终于OK了,所以把它写到自己的博客来,因为网上说的都很复杂     而在这里,我会很简单的说明,一看就懂     首先在进行webservice  一定要下载包    ...

  2. hdu 4873 ZCC Loves Intersection(大数+概率)

    pid=4873" target="_blank" style="">题目链接:hdu 4873 ZCC Loves Intersection ...

  3. c++栈管理库TCMalloc、jeMalloc

    示例:http://blog.csdn.net/chosen0ne/article/details/9338591

  4. Mysql数据库中 ,涉及事物,循环添加数据

    ),),   ) BEGIN declare cnt ; declare i ; declare growthid ; DECLARE t_error INTEGER DEFAULT ;  DECLA ...

  5. Mac OS X 下 TAR.GZ 方式安装 MySQL 5.7+

     方法: http://www.widlabs.com/article/mac-os-x-install-mysql-57-with-tar-gz  mysql下载地址:http://www.mysq ...

  6. https tomcat 证书搭建

    首先生成证书说明 keytool -genkey -alias castest -keyalg RSA -keystore c:/keys/caskey 先让输入密码,密码必须记住,下面会用到 其中“ ...

  7. [转] IOS中AppDelegate中的生命周期事件的调用条件

    IOS中AppDelegate中的生命周期事件的调用条件 //当应用程序将要进入非活动状态执行,在此期间,应用程序不接受消息或事件,比如来电 - (void)applicationWillResign ...

  8. GDB学习之道:GDB调试精粹及使用实例

    一:列文件清单  1. List  (gdb) list line1,line2 二:执行程序  要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出 ...

  9. mac下配置cocos2d-x3.0

    今天看到3.0的正式版公布了,就马上荡下来试试3.0,以下记录下环境变量配置过程 打开用户文件夹下.bash_profile文件,配置环境 1.首先配置下android sdk,我的是在opt文件夹下 ...

  10. Python 基础学习20151201

    L = [ ['Apple','Google','Microsoft'], ['Java','Python','Ruby','PHP'], ['Adam','Bart','Lisa'] ] #打印Ap ...