统计公司员工喜欢吃的水果,并打印出最喜欢吃的前K中水果【map关联式容器,k/V结构】
2017-08-06 19:58
211 查看
5.【附加题】– 本公司现在要给公司员工发波福利,在员工工作时间会提供大量的水果供员工补充营养。
由于水果种类比较多,但是却又不知道哪种水果比较受欢迎,然后公司就让每个员工报告了自己最爱吃的k种水果,
并且告知已经将所有员工喜欢吃的水果存储于一个数组中。然后让我们统计出所有水果出现的次数,
并且求出大家最喜欢吃的前k种水果。
void GetFavoriteFruit(const vector& fruits,size_t k);
ps:要求打印出最喜欢的水果,并且效率尽可能的高。
提示:尽量STL的容器和算法,这样能更快速高效的实现。
由于水果种类比较多,但是却又不知道哪种水果比较受欢迎,然后公司就让每个员工报告了自己最爱吃的k种水果,
并且告知已经将所有员工喜欢吃的水果存储于一个数组中。然后让我们统计出所有水果出现的次数,
并且求出大家最喜欢吃的前k种水果。
void GetFavoriteFruit(const vector& fruits,size_t k);
ps:要求打印出最喜欢的水果,并且效率尽可能的高。
提示:尽量STL的容器和算法,这样能更快速高效的实现。
#include<iostream> #include<map> #include<vector> #include<string> #include <algorithm> using namespace std; bool myfunction(map<string,int>::iterator l,map<string,int>::iterator r) { return l->second > r->second; } void SelectTop(map<string,int>& CountMap,size_t k) { vector<map<string,int>::iterator> v; map<string,int>::iterator it=CountMap.begin(); while (it!=CountMap.end()) { v.push_back(it); it++; } sort(v.begin(),v.end(),myfunction); //3.打印前K个元素 for (size_t j=0;j<k;j++) { cout<<v[j]->first<<"-"<<v[j]->second<<endl; } } void GetFavoriteFruit(const vector<string>& fruits,size_t k) { //1.统计所有水果出现的次数 map<string,int> CountMap; for (size_t i=0;i<fruits.size();i++) { CountMap[fruits[i]]++; } //2.根据水果次数的大小,最map中的元素进行排序 SelectTop(CountMap,k); } int main() { vector<string> v; v.push_back("苹果"); v.push_back("香蕉"); v.push_back("橘子"); v.push_back("桃子"); v.push_back("香蕉"); v.push_back("苹果"); v.push_back("核桃"); v.push_back("西瓜"); v.push_back("樱桃"); v.push_back("杨梅"); v.push_back("火龙果"); v.push_back("菠萝"); v.push_back("苹果"); v.push_back("西瓜"); v.push_back("桃子"); v.push_back("葡萄"); v.push_back("西瓜"); v.push_back("苹果"); v.push_back("杏子"); v.push_back("苹果"); v.push_back("菠萝"); v.push_back("哈密瓜"); v.push_back("苹果"); v.push_back("香蕉"); v.push_back("苹果"); v.push_back("西瓜"); v.push_back("杨梅"); v.push_back("菠萝"); v.push_back("梨"); v.push_back("苹果"); v.push_back("苹果"); v.push_back("西瓜"); v.push_back("香蕉"); v.push_back("苹果"); v.push_back("葡萄"); v.push_back("苹果"); GetFavoriteFruit(v,3); }
相关文章推荐
- 【STL源码剖析读书笔记】【第5章】关联式容器之hash_set、hash_map、hash_multiset和hash_multimap
- STL容器-关联式容器map/multimap
- STL关联式容器——set和map
- 关联式容器-map
- 【STL源码剖析读书笔记】【第5章】关联式容器之hash_set、hash_map、hash_multiset和hash_multimap
- 5 关联式容器-set map multiset multimap
- 【STL】容器 > 关联式容器 > map
- map应用-统计K个最喜欢的水果
- STL学习——STL中的关联式容器总结(RB-tree、set、map、hashtable、hash_set、hash_map)
- 三 关联式容器(二)map和multimap
- 面试题:找出公司员工最喜欢的k种水果
- map容器的使用以及打印Unicode宽字符到文本
- SGISTL源码探究-关联式容器:hash_map
- 水果(二重map容器)
- Chapter 5:关联式容器之 map 和 multimap
- cocos2d-x 中的数据结构集合(容器)(CCArray,Map,Vector)使用笔记
- 关联式容器map/multimap
- 【深度探索STL】关联式容器map和multimap
- 侯捷STL学习(九)--关联式容器(Rb_tree,set,map)
- hdu1263水果(map容器的嵌套)