分组统计

set和map的结合题吧,虽然不难,但还是值得记录一下。

多case,注意清空操作,因为这个(color{red}{WA})了两发。

const int N=110;
int a[N],b[N];
set<int> num,group;
map<int,int> mp[N];
int n;

int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        for(int i=0;i<N;i++) mp[i].clear();
        num.clear(),group.clear();

        cin>>n;

        for(int i=0;i<n;i++) cin>>a[i],num.insert(a[i]);

        for(int i=0;i<n;i++) cin>>b[i],group.insert(b[i]),mp[b[i]][a[i]]++;

        for(auto t:group)
        {
            cout<<t<<'=';
            cout<<'{';
            int cnt=0;
            for(set<int>::iterator it=num.begin();it!=num.end();it++)
            {
                cnt++;
                if(cnt == num.size())
                    cout<<*it<<'='<<mp[t][*it];
                else
                    cout<<*it<<'='<<mp[t][*it]<<',';
            }
            cout<<'}'<<endl;
        }
    }
    //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14355304.html