zoukankan      html  css  js  c++  java
  • POJ 1007 DNA Sorting

    DNA Sorting
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 96532   Accepted: 38867

    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

    Source

     
     
     1 #include <string>
     2 #include <iostream>
     3 #include <algorithm>
     4 using namespace std;
     5 struct DNA
     6 {
     7     string str;
     8     int r;
     9 }d[105];
    10 bool cmp(const DNA &a,const DNA &b)
    11 {
    12     return a.r<b.r;
    13 }
    14 int main()
    15 {
    16     int n,m,num;
    17     while(cin>>n>>m)
    18     {
    19         for(int i=0;i<m;i++)
    20         {
    21             cin>>d[i].str;
    22             num=0;
    23             for(int j=0;j<n;j++)
    24             {
    25                 for(int k=j+1;k<n;k++)
    26                     if(d[i].str[j]>d[i].str[k])
    27                         num++;
    28             }
    29             d[i].r=num;
    30         }
    31         sort(d,d+m,cmp);
    32         for(int i=0;i<m;i++)
    33             cout<<d[i].str<<endl;
    34     }
    35 }
  • 相关阅读:
    AFNetworking 使用总结
    FMDB 直接将查询结果转化为字典
    NSArray 与 NSMutableArray 的排序
    iOS 用UISearchDisplayController实现查找功能
    (转)一句话实例化模型
    OC KVC总结
    OC 解决NSArray、NSDictionary直接打印中文出现乱码的问题
    配置SecureCRT密钥连接Linux
    公司服务器安装——防火墙设置
    给公司服务器装web服务器,邮件服务器——安装SecureCRT
  • 原文地址:https://www.cnblogs.com/cumulonimbus/p/5863598.html
Copyright © 2011-2022 走看看