Mr.J--蓝桥杯--明明的随机数

版权声明:转载请标明出处 https://blog.csdn.net/Ms_yjk/article/details/83536236

问题描述
  明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入格式
  输入有2行,第1行为1个正整数,表示所生成的随机数的个数:
  N
  第2行有N个用空格隔开的正整数,为所产生的随机数。
输出格式
  输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
样例输入
10
20 40 32 67 40 20 89 300 400 15
样例输出
8
15 20 32 40 67 89 300 400

AC代码:

import java.io.*;
import java.util.*;
/*   acm.xatu.edu  明明的随机数
 * 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机
 * 生成了N个1到1000之间的随机整数(N≤100),对于其中重复的
 * 数字,只保留一个,把其余相同的数去掉,不同的数对应着不
 * 同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做
 * 调查。请你协助明明完成“去重”与“排序”的工作。*/
public class Main {

	public static void main(String args[]) throws Exception{
		//读入字符串
		//Reader InputStream
		//FileReader FileInputStream
		
		FileReader r = new FileReader("E:\\java\\random.in");
		BufferedReader br = new BufferedReader(r);
		
		String n = br.readLine();
		String ns = br.readLine();  //10个字符串
		//把字符串分成各个数字的字符串
		String[] strs = ns.split(" ");  //用空格进行切割
		//把字符串中的数字字符转换成数字,并放入线性表中
		
		//List 有重复,有序    Set  无重复,无序
		//ArrayList<Integer> nums = new ArrayList<Integer>();   //数组集合
		HashSet<Integer> nums = new HashSet<Integer>();
		for(String str: strs) {
			int num = Integer.parseInt(str);
			//除去重复数字
			nums.add(num);
		}
		
	    //调试 	System.out.println(nums);
		//排序
		ArrayList<Integer> list = new ArrayList<Integer>(nums);
		
		Collections.sort(list);
		//调试    System.out.println(list);
		//写入random.out
		PrintWriter p = new PrintWriter("E:\\java\\random.out");
		p.println(list.size());      //输出list的个数
		for(int t : list) {
			//int i = list.size()-1;i>=0;i--
			//p.print(list.get(i)+ " ");    // 这两行为降序输出
			p.print(t + " ");
		}
		p.flush();
	}
}

猜你喜欢

转载自blog.csdn.net/Ms_yjk/article/details/83536236