codeup-分组统计
Posted heyour
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeup-分组统计相关的知识,希望对你有一定的参考价值。
2066: 分组统计
Time Limit: 1 Sec Memory Limit: 32 MBSubmit: 2038 Solved: 498
[Submit][Status][Web Board][Creator:Imported]
Description
先输入一组数,然后输入其分组,按照分组统计出现次数并输出,参见样例。
Input
输入第一行表示样例数m,对于每个样例,第一行为数的个数n,接下来两行分别有n个数,第一行有n个数,第二行的n个数分别对应上一行每个数的分组,n不超过100。
Output
输出m行,格式参见样例,按从小到大排。
Sample Input
1
7
3 2 3 8 8 2 3
1 2 3 2 1 3 1
Sample Output
1={2=0,3=2,8=1} 2={2=1,3=0,8=1} 3={2=1,3=1,8=0}
1 #include <stdio.h> 2 3 //注意,组数不一定连续 4 5 struct Number{ 6 int zu; 7 int val; 8 }; 9 10 int main(){ 11 int m, n; 12 while(scanf("%d", &m) != EOF){ 13 while(m--){ 14 scanf("%d", &n); 15 Number num[n]; 16 int max=0, maxn=0; //记录出现的组数 17 for(int i=0; i<n; i++){ 18 scanf("%d", &(num[i].val)); 19 if(num[i].val > maxn){ 20 maxn = num[i].val; 21 } 22 } 23 for(int i=0; i<n; i++){ 24 scanf("%d", &(num[i].zu)); 25 if(num[i].zu > max){ 26 max = num[i].zu; 27 } 28 } 29 int a[max+1][maxn+1]; 30 //初始化不可以用a[max][maxn] = {0}; 31 for(int i=0; i<=max; i++){ 32 for(int j=0; j<=maxn; j++){ 33 a[i][j] = 0; 34 } 35 } 36 for(int i=0; i<n; i++){ 37 a[0][num[i].val] = 1; 38 a[num[i].zu][0] = 1; 39 a[num[i].zu][num[i].val]++; 40 } 41 for(int i=1; i<=max; i++){ 42 if(a[i][0]==0){ 43 continue; 44 } 45 printf("%d={", i); 46 for(int j=0; j<=maxn; j++){ 47 if(a[0][j]==1){ 48 printf("%d=%d", j, a[i][j]); 49 if(j!=maxn){ 50 printf(","); 51 } 52 } 53 } 54 printf("} "); 55 } 56 } 57 } 58 return 0; 59 }
以上是关于codeup-分组统计的主要内容,如果未能解决你的问题,请参考以下文章