SDUT-1500 Message Flood(map)
提示:这个题用到了哈希,题意就是查看去除输入的m个数据,还剩多少个联系人需要回复。
至于字符串的哈希,推荐用C++中的map函数,方便快捷,map充当一个容器,也相当于一个一对一的哈希表,所以用来做这个题来再合适不过。
代码实现如下(g++):
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#include<map>
int main()
{
char s[10001][10]; //健值
char k[10];
int a[100001]; //实值
memset(a,0,sizeof a);
map<string,int>mp; //map函数的标准写法
int l,n,m,i,j;
while(~scanf("%d",&n)&&n)
{
scanf("%d",&m);
for(i=0; i<n; i++)
{
scanf("%s",s[i]);
l=strlen(s[i]);
for(j=0; j<l; j++)
{
if(s[i][j]>='A'&&s[i][j]<='Z')
{
s[i][j]+=32;
}
mp[s[i]]=1;
}
}
for(i=0; i<m; i++)
{
scanf("%s",k);
l=strlen(k);
for(j=0; j<l; j++)
{
if(k[j]>='A'&&k[j]<='Z')
{
k[j]+=32;
}
}
if(mp[k]==1)
mp[k]=0;
}
int z=0;
for(i=0; i<n; i++)
{
if(mp[s[i]]==1)
z++;
}
cout<<z<<endl;
}
return 0;
}