POJ 1007 DNA Sorting (簡單)

來源:互聯網
上載者:User

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 6AACATGAAGGTTTTGGCCAATTTGGCCAAAGATCAGATTTCCCGGGGGGAATCGATGCAT

Sample Output

CCCGGGGGGAAACATGAAGGGATCAGATTTATCGATGCATTTTTGGCCAATTTGGCCAAA

簡單的排序

import java.io.BufferedInputStream;import java.util.Scanner;import java.util.TreeSet;public class POJ1007 {static Scanner s = new Scanner(new BufferedInputStream(System.in));public static void main(String[] args) {int n = s.nextInt();int m = s.nextInt();TreeSet<Str> set = new TreeSet<Str>();int index = 0;for(int i=0; i<m; i++)set.add(new Str(s.next(),index++));for(Str str:set)System.out.println(str.str);}}class Str implements Comparable<Str>{public Str(String str, int index) {this.str = str;this.index = index;}String str;int index;public int getMeasure(){char arr[] = str.toCharArray();int len = arr.length;int sum = 0;for(int i=0; i<len-1; i++){for(int j=i; j<len; j++){if(arr[i] > arr[j])sum++;}}return sum;}public int compareTo(Str o) {if(this.getMeasure() > o.getMeasure())return 1;else if(this.getMeasure() < o.getMeasure())return -1;else{return this.index - o.index;}}}

第二種方法:

import java.util.*;     class DNA   {       private String str = null;       private int sortNum = 0;              public DNA(String input)       {           str = input;                      int num = 0;           for(int i = 0; i < str.length()-1; i++)           {               for(int j = i+1; j < str.length(); j++)                   if(str.charAt(i) > str.charAt(j))                       num++;           }           sortNum = num;       }              public int getSortNum()       {           return sortNum;       }              public String toString()       {           return str;       }   }     class DNAComparator implements Comparator   {       public int compare(Object o1, Object o2)       {           DNA d1 = (DNA)o1;           DNA d2 = (DNA)o2;                      if(d1.getSortNum() > d2.getSortNum())               return 1;           else if(d1.getSortNum() == d2.getSortNum())               return 0;           else              return -1;       }   }     public class Main {         public static void main(String[] args) {           Scanner cin = new Scanner(System.in);           String[] str = cin.nextLine().split(" ");                      int col = Integer.valueOf(str[0]).intValue();           int row = Integer.valueOf(str[1]).intValue();           List list = new ArrayList();                      for(int i = 0; i < row; i++)           {               DNA dna = new DNA(cin.nextLine());               list.add(dna);           }                      Collections.sort(list, new DNAComparator());           print(list);       }              private static void print(List list)       {           Iterator iter = list.iterator();           while(iter.hasNext())           {               System.out.println(iter.next());           }       }     }  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.