问题 B: 分组统计
时间限制 : 1.000 sec 内存限制 : 32 MB
题目描述
先输入一组数,然后输入其分组,按照分组统计出现次数并输出,参见样例。
输入
输入第一行表示样例数m,对于每个样例,第一行为数的个数n,接下来两行分别有n个数,第一行有n个数,第二行的n个数分别对应上一行每个数的分组,n不超过100。
输出
输出m行,格式参见样例,按从小到大排。
样例输入
1
7
3 2 3 8 8 2 3
1 2 3 2 1 3 1
样例输出
1={2=0,3=2,8=1}
2={2=1,3=0,8=1}
3={2=1,3=1,8=0}
#include <iostream>
#include <set>
#include <cstring>
using namespace std;
int couter[2000][2000];
int main() {
int n, m;
while (cin >> m) {
while (m--) {
set<int> number;
set<int> group;
int cin_number[110], cin_group[110];
memset(couter, 0, sizeof couter);
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> cin_number[i];
number.insert(cin_number[i]);
}
for (int i = 0; i < n; ++i) {
cin >> cin_group[i];
group.insert(cin_group[i]);
couter[cin_group[i]][cin_number[i]]++;
}
for (auto i = group.begin(); i != group.end(); ++i) {
cout << *i << "={";
for (auto j = number.begin(); j != number.end(); ++j) {
if (j != number.begin())
cout << "," << *j << "=" << couter[*i][*j];
else
cout << *j << "=" << couter[*i][*j];
}
cout << "}" << endl;
}
}
}
return 0;
}
该博客介绍了一种处理分组统计的方法,通过输入一组数及其分组,统计每个数在不同组内的出现次数。程序使用C++实现,读取输入的数及分组信息,输出每个分组中各数的计数结果。程序通过set数据结构存储数和分组,使用二维数组记录计数,最后按从小到大的顺序输出结果。
1290





