您的位置:首页 > 其它

What Kind of Friends Are You?(字符串匹配)

2017-04-24 14:44 405 查看
链接:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5579

题意:给出一些字符串被回答的序列,要求在接下来的序列中,是否能够唯一确定字符串。

思路:用字符串匹配,用字符串来存储它的回答情况,回答了的直接加到相对应的字符串后面,没有回答到的,全部在字符串尾加‘0’,接下来给出的每一种情况,直接进行匹配即可。

代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
char name[220][30];
int vis[200];
int main()
{
int t;
cin >> t;
while(t--)
{
string value[200];
int n,q;
cin >> n >> q;
int c;
cin >> c;
for(int i=0; i<c; i++)
scanf("%s",name[i]);
for(int i=0; i<q; i++)
{
int m;
cin >> m;
memset(vis, 0 ,sizeof vis);
for(int j=0; j<m; j++)
{
char s[30];
scanf("%s",s);
for(int k=0; k<c; k++)
{
if(!strcmp(s,name[k]))
{
value[k]+='1';
vis[k] = 1;
}
}
}
for(int j=0; j < c; j++)
{
if(!vis[j])
value[j] += '0';
}
}
for(int i=0; i<n; i++)
{
string a;
for(int j=0; j<q; j++)
{
char x;
cin >> x;
a += x;
}
int cnt = 0, k=0;
for(int j=0; j<c; j++)
{
if(a == value[j])
{
cnt++;
k = j;
}
}
if(cnt == 1)
printf("%s\n",name[k]);
else
printf("Let's go to the library!!\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: