标签:
网上看到的一个小练习,自己写了一个,但是时间限制并不符合,并且貌似还有些小问题,暂时放在这儿,代码格式什么的也不太规范。
1、班级排名
时间限制: 1000ms 内存限制: 65536kB
描述
信息科学技术学院年终评定讲学金,需要对整个年级的学生按照平均分数进行排名.
要求:根据输入的学号和平均成绩,按照平均成绩降序输出学号
如果平均成绩相同,按照输入的顺序输出。
输入
第一行为N,表示输入N位学生的信息,接着的N行输入学生信息,1<=N<=500
学生信息的格式为:学号 平均成绩
学号的长度小于10,平均成绩在1-100之间.
输出
按照平均成绩降序输出学号,如果平均成绩相同,按照输入顺序输出
package Some_Demos; import java.io.*; import java.util.*; public class IO_Demo { //static Map<Integer,Float> scoreNo = new TreeMap<Integer,Float>(); static Map<Integer,Float> scoreNo = new HashMap<Integer,Float>(); static List<Float> score = new ArrayList<Float>(); static List<Integer> no = new ArrayList<Integer>(); public static void sortList(List<Float> flist, List<Integer> ilist){ int length = flist.size(); if(length <= 0) return; for(int i=0; i<length; i++){ for(int j=i+1;j<length;j++){ float iTemp = flist.get(i); float jTemp = flist.get(j); float floatTemp; int ilistTemp1 = ilist.get(i); int jlistTemp2 = ilist.get(j); int intTemp; if(iTemp<jTemp){ floatTemp = iTemp; flist.set(i, jTemp); flist.set(j, floatTemp); //intTemp = ilistTemp1; ilist.set(i, jlistTemp2); ilist.set(j, ilistTemp1); } } } } public static void main(String[] args){ long startTime = System.nanoTime(); try{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String strTemp = br.readLine(); String[] strArray; while(strTemp!=null){ //System.out.println(strTemp); if(strTemp.equals("bye")) break; strArray = strTemp.split(" "); //System.out.println(strArray[0] + "-" + strArray[1]); scoreNo.put(Integer.parseInt(strArray[0]), Float.parseFloat(strArray[1])); score.add(Float.parseFloat(strArray[1])); no.add(Integer.parseInt(strArray[0])); strTemp=br.readLine(); } System.out.println(scoreNo); System.out.println(score); sortList(score,no); System.out.println(score); System.out.println(no); }catch(IOException e){ System.out.println(e); }catch(Exception e){ System.out.println(e); } long endTime = System.nanoTime(); System.out.println("程序执行共用时:" + ((endTime-startTime)/1000000) + " ms"); } }
2、十六进制转十进制
时间限制: 1000ms内存限制: 65536kB
描述
将十六进制数转换成十进制数
输入
第一行有一个整数T,表示共有T组数据
接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前没有多余的0
输出
输出共T行,每一行是一组数据的十进制表示,数字前不得有多余的0。
十进制数小于2^31
package Some_Demos; import java.io.*; public class HexToBin { // public void hexTobin(int[] array){ // int length = array.length; // for(int j=0; j<length; j++){ // // } // } // public static void main(String[] args){ long startTime = System.nanoTime(); try{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String strNum = br.readLine(); int count = Integer.parseInt(strNum); if(count <= 0) { System.out.println("输入的数字个数应大于0!"); return; } int[] hex = new int[count]; String strTemp; for(int i=0; i<count; i++){ strTemp = br.readLine(); hex[i] = Integer.valueOf(strTemp, 16); //System.out.println(Integer.valueOf(strTemp,16)); } //hexTobin(hex); //System.out.println(hex); for(int j=0; j<count; j++) System.out.println(hex[j]); }catch(NumberFormatException e){ System.out.println(e); }catch(IOException e){ System.out.println(e); }catch(Exception e){ System.out.println(e); } long endTime = System.nanoTime(); System.out.println("程序执行共用时:" + ((endTime-startTime)/1000000) + " ms"); } }
标签:
原文地址:http://www.cnblogs.com/stevengerrard/p/4180764.html