HJ3——明明的随机数(排序+去重)
描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据(用于不同的调查),希望大家能正确处理)。
注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。
当没有新的输入时,说明输入结束。
输入描述:
注意:输入可能有多组数据(用于不同的调查)。每组数据都包括多行,第一行先输入随机整数的个数N,接下来的N行再输入相应个数的整数。具体格式请看下面的"示例"。
输出描述:
返回多行,处理后的结果
思路及要点整理:排序+去重都可以利用数组的序号来进行处理,在输入时就实现功能,输入时只需要判断数组是否不为0就可以
#include<iostream>
using namespace std;
int main()
{
int num = 0;
while(cin >> num){
int b[1000] = {0};
int x;
for(int i = 0;i < num;i++)
{
cin >> x;
b[x] += 1;
}
for(int x = 0;x < 1000;x++)
{
if(b[x] != 0)
{
cout << x << endl;
}
}
}
return 0;
}
补充小tips:
大写字母和小写字母的ASCII码相差32,可依据此来实现不论大小写字母的功能
C++中读取输入字符串:getline(cin,str);
erase一共三种用法:
1.erase(pos,n);
删除从下标pos开始的n个字符,比如erase(0,1)就是删除第一个字符
2.erase(position);
删除postion处的一个字符(position是一个string类型的迭代器)
3.erase(first,last)
删除从first到last之间的字符(first和last都是迭代器)