1104--DNA排序
问题描述:
逆序数可以用来描述一个序列混乱程度的量。例如,“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排序的更多相关文章
- DNA排序
Q:DNA排序 总时间限制:1000ms内存限制:65536kB 描述 给出一系列基因序列,由A,C,G,T四种字符组成.对于每一个序列,定义其逆序对如下: 序列中任意一对字符X和Y,若Y在X的右边( ...
- Openjudge计算概论-DNA排序
/*===================================== DNA排序 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一系列基因序列,由A,C,G,T四种字符组 ...
- Openjudge-计算概论(A)-DNA排序
描述: 给出一系列基因序列,由A,C,G,T四种字符组成.对于每一个序列,定义其逆序对如下: 序列中任意一对字符X和Y,若Y在X的右边(不一定相邻)且Y < X,则称X和Y为一个逆序对. 例如G ...
- 百炼OJ - 1007 - DNA排序
题目链接:http://bailian.openjudge.cn/practice/1007 #include<stdio.h> #include<algorithm> usi ...
- Mathematics:DNA Sorting(POJ 1007)
DNA排序 题目大意:给定多个ACGT序列,按照字母顺序算出逆序数,按逆序数从小到大排列 这题其实很简单,我们只要用一个归并排序算逆序数,然后快排就可以了(插入排序也可以,数据量不大),但是要注意的是 ...
- 使用qsort对结构体的数据排序
1007 DNA 排序 题目大意: 序列“未排序程度”的一个计算方式是元素乱序的元素对个数.例如:在单词序列“DAABEC'”中,因为D大于右边四个单词,E大于C,所以计算结果为5.这种计算方法称为序 ...
- [POJ 1007] DNA Sorting C++解题
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 77786 Accepted: 31201 ...
- HMM基本原理及其实现(隐马尔科夫模型)
HMM(隐马尔科夫模型)基本原理及其实现 HMM基本原理 Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程.马尔可夫链是时间和状态 ...
- PKU 1007
题名:DNA排序 题意:给定字符串长度.个数,计算每个字符串的逆序数,然后从大到小排列,有兴趣的可以去看下原题. 计算字符串逆序数,然后排序,这里使用了快速排序算法,string释放的时候竟然有问题, ...
- [ML] Concept Learning
Candidate Elimination Thanks for Sanketh Vedula. This is a good demo to understand candidate elimina ...
随机推荐
- compass安装教程
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- C# 微信公众平台开发(4)-- 模版消息
微信公众平台开发 --发送模版消息 发送模版消息是微信服务号给某个用户发送模版消息,类似于APP的推送通知: 1.添加模版消息 在页面的左上 有一个添加功能插件的 按钮,如题 添加完成后,我们就可以在 ...
- BZOJ 1266: [AHOI2006]上学路线route(最短路+最小割)
第一问最短路.第二问,先把最短路的图建出来(边(u,v)满足d[s->u]+d[v->t]+d(u,v)==最短路径长度,就在图中,可以从源点和汇点分别跑一次最短路得到每个点到源点和汇点的 ...
- Retrofit2 上传图片等文件
普通写法: //创建表单的普通字段public static RequestBody createFormBody(String content) { RequestBody body = Reque ...
- @Transactional失效的问题
spring事物配置一般没有问题, 优先检查mysql的引擎是否是innodb, 是的话检查包的扫描是否有问题. 我就是因为包的扫描导致@Transactional失效. 具体情况如下, 在sprin ...
- idea中使用sbt构建scala项目及依赖
1.安装scala插件 http://www.cnblogs.com/yrqiang/p/5310700.html 2. 详细了解sbt: http://www.scala-sbt.org/0.13/ ...
- yoeman构建Asp.net core项目并且实现分层
在Mac上开发使用yoeman构建Asp.net core项目并且实现分层引用 1.Yoeman? yoeman是一个自动化脚手架工具.它提供很多generator,generator相当于Visua ...
- Protel99se教程二:使用protel99se原理图绘制
使用protel99se绘制原理图,首先要先设置一下显示网格这一项,这个可以根据个人习惯,并不是一定需要这样的,在prote99se的界面的View菜下,将visible Grid选中或取消,可以选择 ...
- 查看LINUX系统版本和硬件信息
查看发行版本 # cat /etc/issue Red Hat Enterprise Linux Server release 6.2 (Santiago) 查看内核 # uname -a Linux ...
- jQuery 自学笔记—3
jQuery 语法实例 $(this).hide() 演示 jQuery hide() 函数,隐藏当前的 HTML 元素. $("#test").hide() 演示 jQuery ...