sicily 1341. 明明的随机数
2012-12-11 20:46
344 查看
Description
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input
输入包含多个测试数据。
每个测试数据有2行,第1行为1个正整数,表示所生成的随机数的个数N,第2行有N个用空格隔开的正整数,为所产生的随机数。
Output
对每个测试数据输出2行。第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
先用选择排序进行排序,然后开一个新数组,把不重复的数字填进去,达到去重的目的,再输出。
View Code
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input
输入包含多个测试数据。
每个测试数据有2行,第1行为1个正整数,表示所生成的随机数的个数N,第2行有N个用空格隔开的正整数,为所产生的随机数。
Output
对每个测试数据输出2行。第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
先用选择排序进行排序,然后开一个新数组,把不重复的数字填进去,达到去重的目的,再输出。
View Code
#include<stdio.h> #define MAX 500 void selectionSort( int array[], int size ); void swapInArray( int array[], int first, int second ); void filter( const int array[], int size ); void printArray( const int array[], int size ); int main() { int array[MAX] = {0}; int n; int i; while ( scanf( "%d", &n ) != EOF ) { for ( i = 0; i < n; i++ ) { scanf( "%d", &array[i] ); } selectionSort( array, n ); filter( array, n ); } return 0; } void selectionSort( int array[], int size ) { int i, j; int min; for ( i = 0; i < size - 1; i++ ) { min = i; for ( j = i + 1 ; j < size; j++ ) { if ( array[j] < array[min] ) { min = j; } } if ( i != min ) { swapInArray( array, i, min ); } } return; } void swapInArray( int array[], int first, int second ) { int temp; temp = array[first]; array[first] = array[second]; array[second] = temp; return; } void filter( const int array[], int size ) { int unique = 0; int i; int filteredArray[MAX] = {0}; filteredArray[unique] = array[0]; for ( i = 1; i < size; i++ ) { if ( array[i] != filteredArray[unique] ) { unique++; filteredArray[unique] = array[i]; } } unique++; printf( "%d\n", unique ); printArray( filteredArray, unique ); return; } void printArray( const int array[], int size ) { int i; printf( "%d", array[0] ); for ( i = 1; i < size; i++ ) { printf( " %d", array[i] ); } printf("\n"); return; }
相关文章推荐