oj 1007

Posted yangzihong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oj 1007相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

OJ_1007.计算余数

oj--pat--b1007

九度oj 题目1397:查找数段

从片段向数据库中插入值时ListView不更新

呈现没有动画的 SKStoreProductViewController

MediaRecorder.stop() 停止失败:-1007