您的位置:首页 > 编程语言 > Java开发

poj1007-java

2015-04-19 17:57 253 查看
poj1007

题目大意:

序列“未排序程度”的一个计算方式是元素乱序的元素对个数。例如:在单词序列“DAABEC'”中,因为D大于右边四个单词,E大于C,所以计算结果为5。这种计算方法称为序列的逆序数。序列“AACEDGG”逆序数为1(E与D)——近似排序,而序列``ZWQM'' 逆序数为6(它是已排序序列的反序)。
你的任务是分类DNA字符串(只有ACGT四个字符)。但是你分类它们的方法不是字典序,而是逆序数,排序程度从好到差。
即逆序数从小到大,所有字符串长度相同。


import java.util.*;

class DNA {
private String str = null;
private int sortNum = 0;

public DNA(String input){
str = input;
int num=0;
for(int i=0;i<str.length()-1;i++){
for(int j=i+1;j<str.length();j++){
if(str.charAt(i)>str.charAt(j)){
num++;
}
}
}
sortNum = num;
}
public int getSortNum(){
return sortNum;
}
@Override
public String toString(){
return str;
}
}
class DNAComparator implements Comparator{

@Override
public int compare(Object o1, Object o2) {
DNA d1=(DNA)o1;
DNA d2=(DNA)o2;

if(d1.getSortNum() > d2.getSortNum()){
return 1;
}else if(d1.getSortNum() == d2.getSortNum()){
return 0;
}else{
return -1;
}
}

}
public class Main {

public static void main(String[] args) {
Scanner ss=new Scanner(System.in);
String[] t=ss.nextLine().split(" ");

int col=Integer.valueOf(t[0]).intValue();
int row=Integer.valueOf(t[1]).intValue();
List list=new ArrayList();

for(int i=0;i<row;i++){
DNA dna=new DNA(ss.nextLine());
list.add(dna.toString());
}
Collections.sort(list, new DNAComparator());
print(list);
}

private static void print(List list){
//使用Iterator遍历
Iterator iter = list.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
}

}


Collections.sort();

用法见:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: