NYOJ-255C小加之随机数【模拟】

C小加之随机数

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 1
描述
ACM队的“C小加”同学想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(0<N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助 C小加 完成“去重”与“排序”的工作。
输入
第一行输入整数T(1<T<10)表示多少组测试数据,
每组测试数据包括2行,
第1行为1个正整数,表示所生成的随机数的个数:N(0<N≤100)
第2行有N个用空格隔开的正整数,为所产生的随机数。
(随机数为题目给定的,不需要ACMer生成)
输出
输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。
第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
样例输入
1
10
20 40 32 67 40 20 89 300 400 15
样例输出
8
15 20 32 40 67 89 300 400
#include<stdio.h>
#include<algorithm>
using namespace std;
int map[10000];
bool f(int x,int n)
{
	for(int i=0;i<n;i++)
	{
		if(map[i]==x)
		return false;
	}
	return true;
}
bool cmp(int x,int y)
{
	return x<y;
}
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int j=0;
		int n;
		scanf("%d",&n);
		for(int i=0;i<n;i++)
		{
			int uu;
			scanf("%d",&uu);
			if(f(uu,j))
			{
				map[j++]=uu;
			}
		}
		sort(map,map+j,cmp);
		printf("%d\n",j);
		for(int i=0;i<j;i++)
		{
			if(i==0)
			printf("%d",map[i]);
			else
			{
				printf(" %d",map[i]);
			}
		}
		printf("\n");
	}
	return 0;
} 


你可能感兴趣的:(nyoj,基础模拟)