POJ 1007 DNA Sorting
来源:互联网 发布:淘宝店铺运费模板 编辑:程序博客网 时间:2024/06/16 17:15
DNA Sorting
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 89359 Accepted: 35910
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.
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
一样求逆序对数,根据逆序对数的数量稳定的排序(非递减),再输出DNA序列。依然是用归并排序,求逆序对数。
import java.util.Arrays;import java.util.Scanner;/** * Created by 小粤 on 2015/8/4. */public class Main{ private static DNA[] dnas; private static char[] characters = new char[50]; private static char[] aux = new char[50]; public static void sort(int lo, int hi, int dnasIndex) { if (lo >= hi) return; int mid = (lo + hi) / 2; sort(lo, mid, dnasIndex); sort(mid + 1, hi, dnasIndex); merge(lo, mid, hi, dnasIndex); } private static void merge(int lo, int mid, int hi, int dnasIndex) { int i = lo, j = mid + 1; for (int k = lo; k <= hi; k++) { aux[k] = characters[k]; } for (int k = lo; k <= hi; k++) { if (i > mid) { characters[k] = aux[j++]; } else if (j > hi) { characters[k] = aux[i++]; } else if (aux[j] < aux[i]) { characters[k] = aux[j++]; dnas[dnasIndex].counter += mid - i + 1; } else { characters[k] = aux[i++]; } } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int lengthOfStrings = scanner.nextInt(); int numberOfStrings = scanner.nextInt(); dnas = new DNA[numberOfStrings]; // Oh, shit! Because of Arrays.sort().. for (int i = 0; i < numberOfStrings; i++) { dnas[i] = new DNA(); dnas[i].string = scanner.next(); for (int j = 0; j < lengthOfStrings; j++) { characters[j] = dnas[i].string.charAt(j); } sort(0, lengthOfStrings - 1, i); } Arrays.sort(dnas); for (DNA dna : dnas) { System.out.println(dna); } }}class DNA implements Comparable<DNA>{ public String string; public int counter; @Override public int compareTo(DNA o) { return counter - o.counter; } @Override public String toString() { return string; }}
0 0
- POJ 1007 DNA Sorting
- poj 1007 DNA Sorting
- POJ 1007 DNA Sorting
- POJ-1007 DNA Sorting
- 【POJ】1007 DNA Sorting
- POJ-1007:DNA Sorting
- poj 1007 DNA Sorting
- POJ 1007 DNA Sorting
- POJ 1007 DNA Sorting
- poj 1007 DNA Sorting
- POJ 1007 DNA Sorting
- 【POJ】1007 DNA Sorting
- poj 1007 DNA sorting
- POJ 1007 DNA Sorting
- poj 1007 DNA Sorting
- [POJ][1007]DNA Sorting
- POJ 1007 DNA Sorting
- poj 1007 DNA sorting
- yum 查看已经安装的软件
- (素材源码)swanzhu学IOS(一)UI之_雪花下落
- ios 设计 切图
- CSU1506 Double Shortest Paths 最小费用最大流入门题
- JavaScript基础----20Javascript-DOM操作HTML
- POJ 1007 DNA Sorting
- 界面传值(协议)
- OC僵尸 属性 便利构造器 BOOL类型 继承 方法重写
- swift2.0学习之类型转换
- Maximal Square
- 单例模式
- JavaScript基础----21Javascript-DOM操作CSS
- TCP的连接传输
- 做好软件测试需要具备的思维方式