每天一道算法_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(转载请说明出处)

 

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue网络图片url转Base64「建议收藏」

    vue网络图片url转Base64「建议收藏」单张图片转Base64<script>methods:{ //异步执行 imageUrlToBase64(){ //一定要设置为let,不然图片不显示 letimage=newImage(); //解决跨域问题 image.setAttribute(‘crossOrigin’,’anonymous’); let…

    2025年12月7日
    2
  • 安卓java 模拟直装_安卓2.3java模拟器下载

    安卓java 模拟直装_安卓2.3java模拟器下载java模拟器app。该软件能够使安卓手机完美运行java环境,使用java软件,功能十分强大。用法也超简单!感兴趣的朋友快来IT猫扑下载吧~安卓2.3系统java模拟器直装版简介:此版本适合2.3.7安卓系统,本人手机2.3.4安卓系统安装运行却没压力;此版本还修复上个版本小字体问题,当然,jar游戏图画也大了许多,而且上百张网页图片照开(之前的版本无法显示);此版本还无需root,直接安装就行…

    2025年7月10日
    8
  • golang ipc 通信_golang 2.0

    golang ipc 通信_golang 2.0NTP(NetworkTimeProtocol,网络时间协议)是由RFC1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输,使用的UDP端口号为123。使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。对于运行NTP的本地系统,既可以接收来自其他时钟…

    2022年10月12日
    2
  • 【剑指offer】出现次数超过一半的数字「建议收藏」

    【剑指offer】出现次数超过一半的数字

    2022年1月24日
    44
  • 项目范围管理知识领域共有六个过程_项目范围管理的主要内容

    项目范围管理知识领域共有六个过程_项目范围管理的主要内容项目范围管理项目范围管理包括确保项目做且只做所需的全部工作,以成功完成项目的各个过程。管理项目范围主要在于定义和控制哪些工作应该包括在项目内,哪些不应该包括在项目内项目范围管理的各个过程,包括:5.1规划范围管理一创建范围管理计划,书面描述将如何定义、确认和控制项目范围的过程。5.2收集需求—一为实现项目目标而确定、记录并管理干系人的需要和需求的过程5.3定义范围——制定项目和产品详细描述…

    2025年12月9日
    2
  • 可外链相册大合集!

    可外链相册大合集!博主个人的贴图策略是:本地照片上传用Photobucket收集网页上的照片用poco。(这两个工具在第6和第12项有介绍),并在此强烈鄙视一下,所谓的外联吧,如果不是开淘宝店,就不要用。刚开始用,感觉不错和Photobucket 一样好用,也号称免费,可是一个多月后图片全被封了,然后告诉我不交钱,图片永远不能用!!博主好不容易上传,贴图,加整理的博文就这样被无情地毁了。,强烈抗议这种欺骗消费者的行

    2022年6月15日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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