利用stl::multimap查找共同好友
来源:互联网 发布:淘宝网注册步骤 编辑:程序博客网 时间:2024/06/06 05:36
标题:利用stl::multimap查找共同好友时 限:1000 ms内存限制:10000 K总时限:3000 ms描述:利用multimap模版查找共同好友并输出输入:要查找的所有记录个数
所有记录
要查找多少人的共同好友
这些人的姓名输出:共同好友的全部信息(包括string name;int num;int age;)按照num排序输出,如果没有,输出NO输入样例:6
张潮 刘磊 902419 22
王磊 赵磊 902429 22
张潮 张平一 902436 21
李平一 白上由 902422 22
王浩 王洗星 902420 20
王浩 张平一 902436 21
2
张潮 王浩输出样例:张平一 902436 21提示:相同好友是指 姓名 学号 年龄 全部相同
#include <iostream>using namespace std;#include <map>#include <string>class FriendMessages{public:FriendMessages(string name = "",int num = 0,int age = 0){this->age = age;this->name = name;this->num = num;}void Print() {cout<<name<<' '<<num<<' '<<age<<endl;}bool operator == (FriendMessages comp) {return ((comp.age == age) &&(comp.name == name) && (comp.num == num));}bool operator != (FriendMessages comp) {return !((comp.age == age) &&(comp.name == name) && (comp.num == num));}int num;/// private:string name;int age;};class Problem{public:Problem();void Solved();private:int x,y;struct testFriendMessages{FriendMessages FM;int num;};multimap<string,FriendMessages> messages;multimap<int,testFriendMessages> comFriend;};Problem::Problem(){cin>>x;int iTemp = x;while (iTemp--){string name,friName;int num,age;cin>>name>>friName>>num>>age;FriendMessages FMTemp(friName,num,age);messages.insert(pair<string,FriendMessages>(name,FMTemp));}}void Problem::Solved(){cin>>y;int iTemp = 0;while(iTemp < y){string name;cin>>name;pair< multimap<string,FriendMessages>::iterator,multimap<string,FriendMessages>::iterator > p;p = messages.equal_range(name);if (!iTemp){multimap<string,FriendMessages>::iterator it = p.first;for(;it != p.second;it++){testFriendMessages tFMTemp;tFMTemp.FM = it->second;tFMTemp.num = 1;comFriend.insert(pair<int,testFriendMessages>(tFMTemp.FM.num,tFMTemp));}} else{multimap<string,FriendMessages>::iterator it = p.first;for(;it != p.second;it++){multimap<int,testFriendMessages>::iterator q = comFriend.begin();for (;q != comFriend.end();q++){if (q->second.FM == it->second){q->second.num++;}}}}iTemp++;}multimap<int,testFriendMessages>::iterator q = comFriend.begin();for (;q != comFriend.end();q++){if (q->second.num >= y){q->second.FM.Print();}}}int main(void){Problem P;P.Solved();system("pause"); return EXIT_FAILURE;}
FriendMessages中的数据成员(字段)nun是public,这道题的陷阱在于如何处理排序!
代码风格不理想,可能是太想享受用面向对象的思维方式去解决问题吧。
- 利用stl::multimap查找共同好友
- 3、利用stl::multimap查找共同好友
- mapreduce系列(7)--查找共同好友
- 共同好友
- 共同好友
- stl multimap
- STL Multimap
- 【STL】multimap
- 共同好友mysql
- MapReducer-找共同好友
- MapReduce:共同好友
- Mapreduce实例---共同好友
- 共同好友(java)
- MapReduce寻找共同好友
- MapReduce找共同好友
- MapReduce找共同好友
- MapReduce分析共同好友
- 利用STL二分查找范围
- 模态对话框与非模态对话框
- Membership 、MembershipUser
- USACO 3.1.6 Stamps 邮票
- 史上最简单的RBAC使用说明!!! thinkphp
- Effective C++:条款01
- 利用stl::multimap查找共同好友
- mfc常见问题
- Jsp标准标签库 20111110
- Eclipse 中开启断言检测功能
- 不重启Windows更改IP地址的多种实现(VC)
- 资治通鉴, 卷一,东汉光武大帝
- 用CfileFind递归搜索目录
- 一、 关键子工程(project.c/cpp/pas) 拓扑排序+aov
- 自定义标签的数组排序