计算概论(A) / 函数与字符串练习(2)2:DNA排序
来源:互联网 发布:6120c软件下载 编辑:程序博客网 时间:2024/05/16 09:33
2: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 6AACATGAAGGTTTTGGCCAATTTGGCCAAAGATCAGATTTCCCGGGGGGAATCGATGCAT
- 样例输出
CCCGGGGGGAAACATGAAGGGATCAGATTTATCGATGCATTTTTGGCCAATTTGGCCAAA
#include<stdio.h>#include<string.h>#include<iostream>#include<math.h>#include <algorithm>using namespace std;struct node{char a[1000];int f;int i;}stu[100];bool cmp(node a,node b){if(a.f==b.f){return a.i<b.i;}return a.f<b.f;}int main(){int n,m,i,j,k;char s[1000];scanf("%d%d",&n,&m);for(i=0;i<m;i++){scanf("%s",stu[i].a);stu[i].i=i;stu[i].f=0;for(j=0;j<n-1;j++){for(k=j+1;k<n;k++){if(stu[i].a[k]<stu[i].a[j])stu[i].f++;}}}sort(stu,stu+m,cmp);for(i=0;i<m;i++){printf("%s\n",stu[i].a);}return 0;}
0 0
- 计算概论(A) / 函数与字符串练习(2)2:DNA排序
- openjudge 计算概论 函数与字符串练习(1)2:字符串排序
- 【openjudge 计算概论(A)】[ 函数与字符串练习(2)]
- 【openjudge 计算概论(A)】[函数递归练习(2)]
- 【openjudge 计算概论(A)】[函数与字符串练习(1)]
- 【openjudge 计算概论(A)】[编程练习(字符串)]
- 【openjudge 计算概论(A)】[基础编程练习2]
- 【openjudge 计算概论(A)】[函数递归练习(4)]
- 【openjudge 计算概论(A)】[函数递归练习(3)]
- 【openjudge 计算概论(A)】[函数递归练习(1)]
- 计算概论(A) / 结构体与链表练习
- 【openjudge 计算概论(A)】[指针练习]
- 【openjudge 计算概论(A)】[编程练习(数组练习)]
- 【openjudge 计算概论(A)】[结构体与链表练习]
- 【openjudge 计算概论(A)】[基础编程练习1]
- 计算概论(A) / 结构体与链表练习:3:统计学生信息(使用动态链表完成)
- 【openjudge 计算概论(A)】[基础编程练习(控制成分)]
- 【openjudge 计算概论(A)】[基础编程练习(运算成分)]
- Linux网络编程之socket:select函数的并发限制与poll函数
- 字符序列
- 链表的创建,插入,删除,输出
- 解决“无法安装64位版本的office,因为在您的系统上找到了以下32位程序”
- 文《关于c++与java中文乱码问题分析与解决》中一个bug分析
- 计算概论(A) / 函数与字符串练习(2)2:DNA排序
- Android AIDL编程简例
- arcmap 设置线段的不同颜色(及其他转化)
- asp获取网页源代码并处理乱码的方法
- java基础--类与对象(封装)
- 算法分析
- Android: R cannot be resolved to a variable
- hdu 4901 划分序列使异或和==且和
- [Cocoa]_[初级]_[NSString 、NSImage、NSData、std::string之间的转换]