codeup-分组统计

2066: 分组统计

Time Limit: 1 Sec  Memory Limit: 32 MB
Submit: 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 }
原文地址:https://www.cnblogs.com/heyour/p/12149895.html