标签:
You are given an unsorted array of integer numbers. Your task is to sort this array and kill possible duplicated elements occurring in it.
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.
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.
6 8 8 7 3 7 7
3 7 8
一开始的代码居然没通过
1 #include <cstdio> 2 #include <algorithm> 3 4 int n; 5 int num[1002]; 6 7 int cmp(const void *a, const void *b) { 8 int at = *(int*)a; 9 int bt = *(int*)b; 10 return at - bt; 11 } 12 int main(int argc, char const *argv[]) 13 { 14 while(scanf("%d",&n) != EOF) { 15 for(int i = 0; i < n; i++) { 16 scanf("%d",&num[i]); 17 } 18 qsort(num, n, sizeof(int), cmp); 19 printf("%d",num[0]); 20 for(int i = 1; i < n; i++) { 21 if(num[i] != num[i-1]) { 22 printf(" %d",num[i]); 23 } 24 } 25 puts(""); 26 } 27 return 0; 28 }
题目未告知数据范围,查了半天
测试数据为
2
2147483647 -2
就会失败
修改代码如下
1 #include <cstdio> 2 #include <algorithm> 3 4 int n; 5 int num[1002]; 6 7 int cmp(const void *a, const void *b) { 8 int at = *(int*)a; 9 int bt = *(int*)b; 10 return at > bt; 11 } 12 int main(int argc, char const *argv[]) 13 { 14 while(scanf("%d",&n) != EOF) { 15 for(int i = 0; i < n; i++) { 16 scanf("%d",&num[i]); 17 } 18 qsort(num, n, sizeof(int), cmp); 19 printf("%d",num[0]); 20 for(int i = 1; i < n; i++) { 21 if(num[i] != num[i-1]) { 22 printf(" %d",num[i]); 23 } 24 } 25 puts(""); 26 } 27 return 0; 28 }
标签:
原文地址:http://www.cnblogs.com/jasonJie/p/5808292.html