https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2041
这题就是找出一组数据中出现次数最多的次数,然后就从第一个开始,以那个数循环输出就成了,当然
一开始是要排下序的。
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <algorithm> 5 #define N 10005 6 #define mem(a) memset(a,0,sizeof(a)) 7 using namespace std; 8 int a[N]; 9 10 int main(){ 11 int n; 12 int p=0; 13 while(scanf("%d",&n)&&n){ 14 if(p==0) 15 p=1; 16 else 17 puts(" "); 18 mem(a); 19 for(int i =0;i<n;i++){ 20 scanf("%d",&a[i]); 21 } 22 sort(a,a+n); 23 int k=1,Max=1; 24 for(int i=0;i<n;i++){ 25 if(a[i]==a[i+1]) 26 k++; 27 else{ 28 Max=max(Max,k); 29 k=1; 30 } 31 } 32 printf("%d ",Max); 33 for (int i = 0; i < Max; i ++) { 34 for (int j = i; j < n; j += Max) { 35 printf("%d", a[j]); 36 if (j + Max < n) printf(" "); 37 else printf(" "); 38 } 39 } 40 } 41 42 return 0; 43 }