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

    DNA Sorting
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 103246   Accepted: 41368

    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

     1     Source Code
     2     Problem: 1007        User: zhaopeng938
     3     Memory: 304K        Time: 16MS
     4     Language: C++        Result: Accepted
     5 
     6 Source Code
     7 
     8 #include<iostream>
     9 //#include<fstream>
    10 #include<string>
    11 #include<vector>
    12 using namespace std;
    13 int main()
    14 {
    15     //ifstream in("test.txt");
    16     vector<string> arr;
    17     vector<int> sort;
    18     int n,m;
    19     cin>>n>>m;
    20     int i,j,k;
    21     for(i=0;i<m;i++)
    22     {
    23         string temp;
    24         cin>>temp;
    25         arr.push_back(temp);
    26         int num=0;
    27         for(j=0;j<arr[i].size()-1;j++)
    28             for(k=j+1;k<arr[i].size();k++)
    29                 if(arr[i][j]>arr[i][k])
    30                     num++;
    31         sort.push_back(num);
    32     }
    33     //for(i=0;i<arr.size();i++)
    34         //cout<<arr[i]<<" "<<sort[i]<<endl;
    35     for(i=sort.size()-1;i>0;i--)
    36     {
    37         for(j=0;j<i;j++)
    38         {
    39             if(sort[j]>sort[j+1])
    40             {
    41                 int ls_num;
    42                 ls_num=sort[j];
    43                 sort[j]=sort[j+1];
    44                 sort[j+1]=ls_num;
    45 
    46                 string ls_temp;
    47                 ls_temp=arr[j];
    48                 arr[j]=arr[j+1];
    49                 arr[j+1]=ls_temp;
    50             }
    51         }
    52     }
    53     for(i=0;i<arr.size();i++)
    54         cout<<arr[i]<<endl;
    55     return 0;
    56 }
  • 相关阅读:
    java并发系列(六)-----Java并发:volatile关键字解析(内存语义、实现原理)
    java并发系列(五)-----如何正确的关闭一个线程
    23.备忘录模式(Memento Pattern)
    22.访问者模式(Vistor Pattern)
    21.责任链模式
    20.策略者模式(Stragety Pattern)
    19.状态者模式(State Pattern)
    18.中介者模式(Mediator Pattern)
    17.观察者模式(Observer Pattern)
    16.迭代器模式(Iterator Pattern)
  • 原文地址:https://www.cnblogs.com/zhaopeng938/p/7551779.html
Copyright © 2011-2022 走看看