DNA Sorting
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 95209   Accepted: 38311

Description

One measure of ``unsortedness'' in a sequence is the number of pairs of entries that are out of order with respect to each other. For instance, in the letter sequence ``DAABEC'', this measure is 5, since D is greater than four letters to its right and E is greater than one letter to its right. This measure is called the number of inversions in the sequence. The sequence ``AACEDGG'' has only one inversion (E and D)---it is nearly sorted---while the sequence ``ZWQM'' has 6 inversions (it is as unsorted as can be---exactly the reverse of sorted).

You are responsible for cataloguing a sequence of DNA strings (sequences containing only the four letters A, C, G, and T). However, you want to catalog them, not in alphabetical order, but rather in order of ``sortedness'', from ``most sorted'' to ``least sorted''. All the strings are of the same length.

Input

The first line contains two integers: a positive integer n (0 < n <= 50) giving the length of the strings; and a positive integer m (0 < m <= 100) giving the number of strings. These are followed by m lines, each containing a string of length n.

Output

Output the list of input strings, arranged from ``most sorted'' to ``least sorted''. Since two strings can be equally sorted, then output them according to the orginal order.

Sample Input

10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT

Sample Output

CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA

C/C++代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h> struct Str{
char str[];
int inversions;
}data[]; int inversionNumber(char s[]) { int len = strlen(s);
int result = ;
int A = , C = , G = ;
int i = len - ;
for(; i >= ; i--)
switch (s[i]) {
case 'A':
A++;
break;
case 'C':
result += A;
C++;
break;
case 'G':
result = result + A + C;
G++;
break;
case 'T':
result = result + A + C + G;
break;
}
return result;
} int cmp(const void * a, const void * b) { struct Str* c = (struct Str *)a;
struct Str* d = (struct Str *)b;
return c->inversions - d->inversions; } int main(int argc, const char * argv[]) { int length, number;
int i;
scanf("%d%d", &length, &number); for (i = ; i < number; i ++) {
scanf("%s", data[i].str);
data[i].inversions = inversionNumber(data[i].str);
} qsort(data, number, sizeof(data[]), cmp); for (i = ; i < number; i ++) {
printf("%s\n", data[i].str);
} return ;
}

poj 1007 DNA sorting (qsort)的更多相关文章

  1. poj 1007:DNA Sorting(水题,字符串逆序数排序)

    DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 80832   Accepted: 32533 Des ...

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

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

  3. [POJ] #1007# DNA Sorting : 桶排序

    一. 题目 DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 95052   Accepted: 382 ...

  4. poj 1007 DNA Sorting

    DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 95437   Accepted: 38399 Des ...

  5. POJ 1007 DNA Sorting(sort函数的使用)

    Description One measure of ``unsortedness'' in a sequence is the number of pairs of entries that are ...

  6. POJ 1007 DNA sorting (关于字符串和排序的水题)

    #include<iostream>//写字符串的题目可以用这种方式:str[i][j] &str[i] using namespace std; int main() {int ...

  7. poj 1007 DNA Sorting 解题报告

    题目链接:http://poj.org/problem?id=1007 本题属于字符串排序问题.思路很简单,把每行的字符串和该行字符串统计出的字母逆序的总和看成一个结构体.最后把全部行按照这个总和从小 ...

  8. poj 107 DNA sorting

    关于Java的题解,也许效率低下,但是能解决不只是ACGT的序列字符串 代码如下: import java.util.*; public class Main { public static void ...

  9. poj 1007 (nyoj 160) DNA Sorting

    点击打开链接 DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 75164   Accepted: 30 ...

随机推荐

  1. http常见状态码分析

    200:这个是最常见的http状态码,表示服务器已经成功接受请求,并将返回客户端所请求的最终结果 301:客户端请求的网页已经永久移动到新的位置,当链接发生变化时,返回301代码告诉客户端链接的变化, ...

  2. 七十九:flask.Restful之flask-Restful蓝图与渲染模板

    1.flask-Restful与蓝图结合使用如果要在蓝图中使用flask-Restful,那么在创建Api对象的时候,就不应该使用app,而是蓝图,如果有多个蓝图,则需在每一个蓝图里面创建一个Api对 ...

  3. Python之数据库操纵工具

    前言 基于原生模块:pymysql 推荐教程 Python 数据库处理的类库 pymysql [python原生模块] SQLAchemy [ORM框架] Python3 MySQL 数据库连接 - ...

  4. Initializer for conditional binding must have Optional type, not 'String'

    今天看到问Swift问题:  Initializer for conditional binding must have Optional type, not 'String' 以前没遇到过这个问题, ...

  5. shell脚本安装python、pip-----非交互式的--批量执行函数

    首先把pip-.tgz 安装包放在 /usr/local 下面,按照顺序先安装pip,再安装python.不要先安装或只安装python,否则很容易出错, cat >>pip-python ...

  6. 【Java】递归删除目录以及文件

    public static void deleteDirectory(String path) { File pFile = new File(path); //若目录以及文件不存在,则终止继续执行方 ...

  7. SqlServer try catch 捕获触发器\存储过程异常,结合 transaction 事务

    SoEasy~,贴上代码看所有 ALTER trigger [dbo].[tgr_SG_Gathering_update] on [dbo].[SG_Gathering] for update --更 ...

  8. selenium三种断言以及异常类型

    elenium提供了三种模式的断言:assert .verify.waitfor 1)Assert(断言) 失败时,该测试将终止. 2)Verify(验证) 失败时,该测试将继续执行,并将错误记入日志 ...

  9. UOJ#152盘子序列

    题面君 那这是一题比较标准的单调栈的题目,维护一下单调栈并访问就好了 int n;//因为我写了十几行头文件..头文件就删了,大家自己加一下吧.. ]; ],s2[],t1,t2; int get() ...

  10. 应用安全 - 工具|平台 - Elasticsearch- 漏洞 - 汇总

    未授权访问 (1)/_cat/indices #Index个数查询 (2)/_mapping?pretty=true #type个数查询 (3)根据Index和type查询表数据 (4)/_river ...