信息洪流(1004. Message Flood)

来源:互联网 发布:mac os x 10.10.5 iso 编辑:程序博客网 时间:2024/05/01 07:14

题目大意是,有多组测试数据,以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;      }  }                                      


0 0
原创粉丝点击