题解 | #分组统计#

分组统计

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

#include <bits/stdc++.h>
#define MAX 1000
using namespace std;

int main(){
	int m,n;
	int v[MAX],index[MAX];
	set<int> s1;	//去重排序用
	set<int> s2;
	map<int,int> mp; //map记录对应值的数量 
	
	cin>>m;
	while(m--){
		cin>>n;
		for(int i = 0; i < n; i++)
			cin>>v[i];
		for(int i = 0; i < n; i++)
			cin>>index[i];
		for(int i = 0; i < n; i++){
			s1.insert(index[i]);	//对组数去重、并从小到大排序 
			s2.insert(v[i]);		//对内容去重、并从小到大排序 
		}
			
		for(set<int>::iterator i = s1.begin();i != s1.end(); i++){	//组数 
			for(set<int>::iterator j = s2.begin();j != s2.end(); j++){	//初始化内容个数 
				mp[*j] = 0;
			}
			
			for(int j = 0; j < n; j++){	//遍历数组给map赋值个数 
				if(index[j] == *i){
					mp[v[j]]++;	
				}
			}
			cout<<*i<<"={";
			map<int,int>::iterator it;
			for(it = mp.begin(); it != --mp.end(); it++){	//输出到倒数第二个数 
				cout<<it->first<<"="<<it->second<<",";
			} 		
			cout<<it->first<<"="<<it->second<<"}"<<endl;	//单独处理最后一个数 
		}
		mp.clear();	//重置map 
		s1.clear();
		s2.clear(); 
		
	}
}

全部评论

相关推荐

码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:15
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务