poj1007-java
来源:互联网 发布:数据库 生成 防伪码 编辑:程序博客网 时间:2024/05/20 11:49
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();
用法见:
0 0
- poj1007-java
- poj1007
- POJ1007
- poj1007
- POJ1007
- poj1007
- POJ1007
- poj1007
- poj1007
- poj1007
- POJ1007
- poj1007
- poj1007
- POJ1007
- poj1007
- Poj1007
- poj1007
- poj1007
- java集合:Collection和Map的介绍
- 系统分析师论文通用格式
- Git简单教程(四)--团队协作,组织和分支
- 阶段性总结——自考
- 优化代码的重要性
- poj1007-java
- Java基础---接口
- 六种流行的语言---C、C++、python、Java、php、C#比较[转]
- qq 中间弹窗
- RenderThread学习笔记
- 关于反射GetType().GetProperties()的疑惑
- C语言中的局部变量
- 安卓开发中Theme.AppCompat.Light的解决方法
- js观察者模式