九度OJ 1041:Simple Sorting(简单排序) (排序)
- 题目描述:
-
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
思路:
要求排序之后输出时去掉重复数字,输出时加判断即可。
代码:
#include <stdio.h> #include <stdlib.h> int cmp(const void *a, const void *b) { return *((int*)a) > *((int*)b) ? 1: -1; } int main(void) { int n; int a[1000], b[1000]; int i; while (scanf("%d", &n) != EOF) { for (i=0; i<n; i++) scanf("%d", &a[i]); qsort(a, n, sizeof(a[0]), cmp); int k = 0; b[0] = a[0]; for (i=0; i<n; i++) { if (a[i] != b[k]) { k++; b[k] = a[i]; } } for (i=0; i<k; i++) printf("%d ", b[i]); printf("%d\n", b[i]); } return 0; } /************************************************************** Problem: 1041 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:912 kb ****************************************************************/
编程算法爱好者。