码迷,mamicode.com
首页 > 其他好文 > 详细

oj 1007

时间:2019-11-23 18:32:55      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:problem   ret   for   value   ide   bsp   list   toc   int   

DNA分类
时限:1000 MS   内存限制:10000 K
提交材料共计: 114762   接受: 45919

描述

在一个序列中,“未排序”的一种衡量标准是,彼此之间出现无序的一对条目的数量。例如,在字母序列“DAABEC”中,这一度量为5,因为D在右边大于4个字母,而E在右边大于一个字母。这个度量称为序列中的反转数。序列‘AACEDGG’只有一个反转(E和D)--它几乎被排序--而‘ZWQM’序列有6个反转序列(它尽可能地没有排序-与排序正好相反)。

您负责对DNA字符串序列(仅包含四个字母A、C、G和T的序列)进行编目。但是,你要把它们分类,不是按字母顺序排列,而是按“排序顺序”排序,从“排序最多”到“排序最少”。所有的字符串都有相同的长度。

输入

第一行包含两个整数:正整数n(0<n<=50),表示字符串的长度;正整数m(0<m<=100),表示字符串的数目。后面跟着m行,每一行包含一个长度为n的字符串。

输出量

输出输入字符串列表,从“大部分排序”排列到“排序最少”。由于两个字符串可以被同等排序,然后根据原始顺序输出它们。

样本输入

10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT

样本输出

CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA

来源

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        List<Element> list = new ArrayList<Element>();
        List<Integer>levelList=new ArrayList<Integer>();
        int i,j, level, elementNum;
        scanner.nextInt();
        elementNum = scanner.nextInt();
        int flag = 0;
        for (i = 0; i < elementNum + 1; i++) {
            String element = scanner.nextLine();
            if (flag == 0) {
                flag = 1;
                continue;
            }
            char[] elementArray = element.toCharArray();
            level = getLevel(elementArray);
            Element element1 = new Element();
            element1.setValue(element);
            element1.setLevel(level);
            list.add(element1);
            levelList.add(level);
        }
        Object[] levelArray = levelList.toArray();
        Arrays.sort(levelArray);
        for(i=0;i<levelArray.length;i++){
            for(j=0;j<list.size();j++){
                if(list.get(j).getLevel()==levelArray[i]){
                    System.out.println(list.get(j));
//                    System.out.println(list.get(j).getValue());
                    list.remove(j);
                    break;
                }
            }
        }
    }

    private static int getLevel(char[] elementArray) {
        int i, j, level = 0, len = elementArray.length;
        for (i = 0; i < len - 1; i++) {
            for (j = i + 1; j < len; j++) {
                if (elementArray[i] > elementArray[j]) {
                    level++;
                }
            }
        }
        return level;
    }
}

class Element {
    private String value;
    private Integer level;

    public String getValue() {
        return value;
    }

    void setValue(String value) {
        this.value = value;
    }

    public Integer getLevel() {
        return level;
    }

    void setLevel(Integer level) {
        this.level = level;
    }

    @Override
    public String toString() {
        return "Element{" +
                "value=‘" + value + ‘\‘‘ +
                ", level=" + level +
                ‘}‘;
    }
}

不知道哪里错了

oj 1007

标签:problem   ret   for   value   ide   bsp   list   toc   int   

原文地址:https://www.cnblogs.com/yangzihong/p/11918828.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!