每天一道算法_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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql优化 面试_数据库优化方案整理

    mysql优化 面试_数据库优化方案整理点赞是一种积极的生活态度!有支持才有动力!微信搜索公众号【达摩克利斯之笔】获取更多资源,文末有二维码!前言数据库优化是一个老生常谈的问题,刚入门的小白或者工作N年的光头对这个问题应该都不陌生,你要面试一个中高级工程师那么他就想”哥俩好”一样那么粘,面试官肯定会问这个问题,这篇文章我们就和它哥俩好!而且这个问题就是一个送分题,数据库的优化方案基本就是那些,答案也都是固定的,大家只要好好…

    2025年7月13日
    4
  • linux通配符大全_linux中rmdir命令

    linux通配符大全_linux中rmdir命令linux基础(通配符的使用)你好!这里是面向新手的linux入门指南,这节课我会整理我所知道的linux中的通配符,希望和大家一起学习通配符的概念首先通配符绝对不是正则表达式,通配符基础只有4个:***,?,[],[^]**。这些一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等符号*:该符号表示一个或多个字符例如:*finda为找a开头的文件符号?:表示代替单个字符符号[list]:表示匹配list中的任意单一字符【0,9】—

    2022年9月19日
    3
  • 多路复用_java多路复用

    多路复用_java多路复用1、说明socket编程的demo中使用的都是最基本的,但是一般不会真正用在项目中的代码。而实际项目中,需要面临复杂多变的需求环境,比如有多个socket连接,或者服务需要监听的时候,可能有很多so

    2022年8月3日
    9
  • 微信小程序地图实时定位_小程序获取当前位置定位信息

    微信小程序地图实时定位_小程序获取当前位置定位信息小程序获取当前位置,回到当前位置,地图定位,导航效果因为小程序更新了获取地理位置API接口,需要先在app.json中配置一下permission字段,不然会报微信小程序getLocation需要在app.json中声明permission字段app.json:(不知道具体位置可以看这里,这里有整个app.json的配置)”permission”:{…

    2022年9月28日
    3
  • PAT乙级-【题目+解答】汇总(100%原创/100%完成)

    PAT乙级-【题目+解答】汇总(100%原创/100%完成)PAT乙级-【题目+解答】汇总PAT乙级-AC全解汇总PAT乙级解答集合

    2022年6月13日
    27
  • Pytorch和Torchvision版本对应

    Pytorch和Torchvision版本对应IrecommendAnacondaasPythonpackagemanagementsystem.Pleaserefertopytorch.orgforthedetailofPyTorch(torch)installation.ThefollowingisthecorrespondingtorchvisionversionsandsupportedPythonversions:

    2022年6月24日
    50

发表回复

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

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