博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Openjudge-计算概论(A)-DNA排序
阅读量:5108 次
发布时间:2019-06-13

本文共 1098 字,大约阅读时间需要 3 分钟。

描述:

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

样例输出

CCCGGGGGGAAACATGAAGGGATCAGATTTATCGATGCATTTTTGGCCAATTTGGCCAAA 思路:用结构体,统计每个字符串的逆序对个数,排序,输出即可。 代码如下(本代码来自我的老师:http://www.cnblogs.com/huashanqingzhu/p/3575491.html):
1 #include
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
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

 

转载于:https://www.cnblogs.com/geek-007/p/4296734.html

你可能感兴趣的文章
【转载】Android 的 Handler 机制实现原理分析
查看>>
scanf函数
查看>>
HTML5——新表单元素 表单属性 语义元素
查看>>
CSS3—— 分页 框大小 弹性盒子 多媒体查询 多媒体查询实例
查看>>
使用反射获取Android中隐藏的方法
查看>>
【原创】Leetcode -- Reverse Linked List II -- 代码随笔(备忘)
查看>>
人脸识别技术开发人证比对访客系统
查看>>
Android之人脸识别
查看>>
HDU 5340——Three Palindromes——————【manacher处理回文串】
查看>>
二叉树的下一个节点
查看>>
Nginx配置文件详细说明
查看>>
遇到的Mysql的一个坑
查看>>
AC日记——「HNOI2017」单旋 LiBreOJ 2018
查看>>
vue总结
查看>>
真机调试的准备工作介绍
查看>>
(笔记)Linux内核学习(十一)之I/O层和I/O调度机制
查看>>
[lintcode medium] Delete digits
查看>>
3.29下午
查看>>
macOS升级到high Sierra后, Cocoapods不能使用解决办法
查看>>
vmstat详细说明
查看>>