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

来源:互联网 发布:网络词 抓马什么梗 编辑:程序博客网 时间:2024/06/06 19:20

链接: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;}
0 0