每天一道算法_8_DNA Sorting

DescriptionOne 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 mea

大家好,又见面了,我是全栈君。

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

 

代码如下:

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.util.Arrays;
import java.util.Comparator;

//import java.util.Scanner;   
class DNA {
	String value;
	int level;
}

class DNAType implements Comparator<Object> {
	public int compare(Object arg0, Object arg1) {
		DNA obj1 = (DNA) arg0;
		DNA obj2 = (DNA) arg1;
		return obj1.level - obj2.level;
	}
}

public class DNASorting {
	public static void main(String[] args) throws Exception {
		int i;
		// Scanner cin = new Scanner(System.in);
		DataInputStream cin = new DataInputStream(new BufferedInputStream(
				System.in));
		// int col = cin.nextInt();
		// int row = cin.nextInt();
		// cin.nextLine();
		String s = new String();
		s = cin.readLine();
		String n[] = s.split(" ");
		int col = Integer.parseInt(n[0]);
		int row = Integer.parseInt(n[1]);
		DNA dna[] = new DNA[row];
		for (i = 0; i < row; ++i) {
			String line = new String();
			// line = cin.nextLine();
			line = cin.readLine();
			dna[i] = new DNA();
			dna[i].value = line;
			dna[i].level = getLevel(line);
		}
		DNAType comp = new DNAType();
		Arrays.sort(dna, comp);
		for (i = 0; i < row; ++i) {
			System.out.println(dna[i].value);
		}
	}

	private static int getLevel(String line) {
		int i, j, t = 0;
		for (i = 0; i < line.length(); ++i) {
			for (j = i + 1; j < line.length(); ++j) {
				if (line.charAt(i) > line.charAt(j)) {
					++t;
				}
			}
		}
		return t;
	}
}

 

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(转载请说明出处)

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121381.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Oracle—number数据类型[通俗易懂]

    Oracle—number数据类型[通俗易懂]https://www.cnblogs.com/oumyye/p/4448656.htmlNUMBER ( precision, scale)实际值数据类型存储值

  • mysql econnreset_Nodejs 套接字报错处理 Error: read ECONNRESET

    mysql econnreset_Nodejs 套接字报错处理 Error: read ECONNRESET错误信息:Error:readECONNRESETatTCP.onStreamRead(internal/stream_base_commons.js:162:27)出现上述情况一般是客户端关闭了socket连接导致的错误,这个错误会导致程序的异常退出解决办法:varpReq=http.request(options,function(pRes){cSock.writeHead…

  • 用js来实现那些数据结构13(树01-二叉搜索树的实现)

    前一篇文章我们学会了第一个非顺序数据结构hashMap,那么这一篇我们来学学树,包括树的概念和一些相关的术语以及二叉搜索树的实现。唉?为什么不是树的实现,不是二叉树的实现。偏偏是二叉搜索树的实现?嗯,

  • np.astype()

    np.astype()1.作用:就是转换numpy数组的数据类型举个例子arr=np.arange((10))print(arr,arr.dtype,sep=”\n”)===================================[0123456789]int32#可以看到,他的数据类型为int32np.astype()arr=arr.astype(“f…

  • 函数极限的定义

    函数极限的定义严格定义设函数y=f(x)y=f(x)y=f(x)在点x0x_0x0​的某个去心邻域内有定义,即存在ρ>0\rho>0ρ>0,使O(x0,ρ)\{x0}⊂Df\mathbf{O}(x_0,\rho)\backslash\{x_0\}\subsetD_fO(x0​,ρ)\{x0​}⊂Df​如果存在实数AAA,对于任意给定的ε>0\varepsilon>0ε>0,可以找到δ>0\delta>0δ>0,使得当0<∣x−x0∣

  • OpenCV实现SfM(一):相机模型

    OpenCV实现SfM(一):相机模型相机的标定SfM介绍SfM的全称为StructurefromMotion,即通过相机的移动来确定目标的空间和几何关系,是三维重建的一种常见方法。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号