题解(C++容器) | #分组统计#

分组统计

https://www.nowcoder.com/practice/5cb47b86911c4aa48722e531a51ec823

#include <array>
#include <iostream>
#include <map>
#include <vector>
using namespace std;

int main() {
    int m, n, t;
    cin >> m;
    while (m--) {
        cin >> n;
        vector<int> number; //记录输入的数
        vector<int> group_id; //记录对应分组
        map<int, int> elem;
        for(int i=0; i<n; i++){
            cin >> t;
            elem[t]=0;  // map初始化,记录出现过的元素
            number.push_back(t);
        }
        map<int, map<int, int>> group;
        for(int i=0; i<n; i++){
            cin >> t;
            group[t]= elem; //分组初始化
            group_id.push_back(t);
        }
        for(int i=0; i<n; i++){
            group[group_id[i]][number[i]] ++;
        }
        for(auto &i : group){
            cout<< i.first <<"={";
            for(auto &j : i.second){
                if(j.first == i.second.rbegin()->first){
                    cout<< j.first << "=" << j.second;
                }else {
                    cout<< j.first << "=" << j.second <<",";
                }
            }
            cout <<"}" <<endl;
        }
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务