每日一九度之 题目1041:Simple Sorting
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:4883
解决:1860
You are given an unsorted array of integer numbers. Your task is to sort this array and kill possible duplicated elements occurring in it.
</dd> </dl> <dl> <dt> 输入: </dt> <dd>For each case, the first line of the input contains an integer number N representing the quantity of numbers in this array(1≤N≤1000). Next N lines contain N integer numbers(one number per each line) of the original array.
</dd> </dl> <dl> <dt> 输出: </dt> <dd>For each case ,outtput file should contain at most N numbers sorted in ascending order. Every number in the output file should occur only once.
</dd> </dl> <dl> <dt> 样例输入: </dt> <dd>6 8 8 7 3 7 7</dd> </dl> <dl> <dt> 样例输出: </dt> <dd>
3 7 8</dd> </dl>
本来想用桶排做的,提交后发现runtime error,应该是数的范围太宽了。
//Asimple #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <cctype> #include <cstdlib> #include <stack> #include <cmath> #include <set> #include <map> #include <string> #include <queue> #include <limits.h> #define INF 0x7fffffff using namespace std; const int maxn = 1005; typedef long long ll; int n, num; int a[maxn]; int main(){ while( ~scanf("%d",&n) ){ memset(a,0,sizeof(a)); while( n -- ){ scanf("%d",&num); a[num] = 1; } int k = 0; for(int i=0; i<maxn; i++){ if( a[i] ){ printf(k==0?"%d":" %d",i); k ++; } } printf("\n"); } return 0; }
正解,用STL中的set正好。简单,明了!!
//Asimple #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <cctype> #include <cstdlib> #include <stack> #include <cmath> #include <map> #include <set> #include <string> #include <queue> #include <limits.h> #define INF 0x7fffffff using namespace std; const int maxn = 1005; typedef long long ll; int n, num; set<int> s; int main(){ while( ~scanf("%d",&n) ){ s.clear(); while( n -- ){ scanf("%d",&num); s.insert(num); } set<int>::iterator it; for(it=s.begin(); it!=s.end(); it++){ printf(it==s.begin()?"%d":" %d",*it); } printf("\n"); } return 0; }