您的位置:首页 > 其它

信息洪流(1004. Message Flood)

2014-11-01 21:08 120 查看
题目大意是,有多组测试数据,以0结束输入。每组第一行输入整数n和m(1<=n, m<=20000), n代表你朋友的个数,m为你收到的信息的个数,你要给你所有的朋友发信息。接下来n行输入你n个朋友的姓名(大小写不敏感),再接下来m行输入给你发信息的人的姓名,这些人有可能是你的朋友或陌生人,你会先给这些人回复信息。那么,除了这些已回复的朋友,你要计算你还要给多少个朋友发信息。

这道题可以用map来做,保存你的每个朋友的姓名和是否被回复的状态。

#include<iostream>
#include<iomanip>
#include <map>
#include <string>
using namespace std;

int main()
{
int n,m;
string tmp;
while(cin>>n,n)
{
cin>>m;
map<string,bool> test;  //string类型保存姓名,bool类型保存发消息状态
map<string,bool>::iterator it;

for(int i=0;i<n;i++)  //进行初始化
{
cin>>tmp;
for(int j=0;j<tmp.length();j++)
tmp[j]=tolower(tmp[j]);
test[tmp]=false;  //未发消息
}

for(int i=0;i<m;i++)
{
cin>>tmp;
for(int j=0;j<tmp.length();j++)
tmp[j]=tolower(tmp[j]);
it=test.find(tmp);      //判断是否是朋友
if(it!=test.end()&&it->second==false){  //如果是,更新状态
it->second=true;
n--;
}
}
cout<< n <<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: