3、明明的随机数
来源:互联网 发布:淘宝策划部工资 编辑:程序博客网 时间:2024/06/05 22:38
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入描述:
输入多行,先输入随机整数的个数,再输入相应个数的整数
输出描述:
返回多行,处理后的结果
Java code:
import java.util.Arrays;import java.util.Scanner;public class Test { public static void main(String[] args){ Scanner scan = new Scanner(System.in); while(scan.hasNext()){ int sum = scan.nextInt(); int arr[] = new int[sum]; for (int i = 0; i < arr.length; i++) { arr[i] = scan.nextInt(); } Arrays.sort(arr); for (int i = 0; i < arr.length; i++) { if (i == 0) { System.out.println(arr[0]); }else if (arr[i]!=arr[i-1]) { System.out.println(arr[i]); } } } }}
Idea:
1、Java的方法是先排序,然后再删除重复的值,接下来的C++版本反过来(先删除重复的值,然后再排序)。
2、要注意最后的for循环,其中的if语句的作用是为了防止数组越界的问题。
C++ code:
#include <iostream>#include "string.h"#include <algorithm>using namespace std;#define MAX 1000int main(){ int a[MAX]; int sum; cin >> sum; for (int i = 0;i<sum;i++) { cin >> a[i]; } for (int i = 0; i < sum; i++) { for (int j = i+1; j < sum; j++) { if (a[i] == 0) continue; if (a[j] == a[i]) { a[j] = 0; } } } sort(a, a + sum); for (int i = 0; i < sum;i++) { if (a[i]>0) { cout << a[i] << endl; } } return 0;}
Idea:
1、先把重复的数据给去了:
用两个for循环
第一层实现对数据的所有的 位置 进行遍历
第二层实现对相同数据进行 归零 处理(因为输入的数据是从1-1000,归零不是一定的,也可以改成负数)
2、归零的reason:方便后面的排序过程
3、调用内置的排序
4、输出的时候大于0再输出
5、先去重再排序,使用的内存空间会降低。
Note:
1、Java 实现读取输入内容code
2、Java、C++自带排序sort的使用
3、一个程序总有一些小毛病要修修改改,每次就是调试运行的时候才知道自己哪里哪里出问题了。
以后要多加强这方面的训练,特别是编程思维,先把逻辑关系,预考虑的东西考虑好,然后下手,争取一次成功!
阅读全文
1 0
- 3、明明的随机数
- 3——明明的随机数
- water~~~明明的随机数
- 1341. 明明的随机数
- 【模拟】明明的随机数
- 【模拟】明明的随机数
- 1342 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- 1002. 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- How To Install Apache Kafka on Ubuntu 14.04
- TCP
- spark集群的搭建
- 魔法方法:属性访问
- (转)智能投顾面临的法律合规问题及国际监管经验
- 3、明明的随机数
- http前端缓存(二)
- Tomcat学习总结(8)—— Tomcat常见面试题
- JUnit中常见的注解和断言方法
- LIS
- Git基本命令
- java Excel导出功能
- 构造方法,类和对象的关系......
- C++ String的传统和现代写法的深拷贝