Codeforces 868A Bark to Unlock 水题

来源:互联网 发布:数据库图片的类型 编辑:程序博客网 时间:2024/06/07 00:13

题意

给两个小写字母作为密码,一个n(100),接下来n行每行两个小写字母.
询问从n行中选任意次任意行能否拼接成一个字符串,密码串为该字符串的子串.

解法

两种情况.
1.存在一个串与密码串完全相同.
2.存在一个串的第二个字符与密码串第一个字符相同,且存在一个串的第一个字符与密码串第二个字符相同.
满足其一即可.

代码

/* LittleFall : Hello! */#include <bits/stdc++.h>using namespace std;int main(void){    char p[5],pp[110][5];    int n,ans1=0,ans2=0;    scanf("%s%d",p,&n);    for(int i=0;i<n;i++)    {        scanf("%s",pp[i]);    }    for(int i=0;i<n;i++)    {        if(pp[i][0]==p[0]&&pp[i][1]==p[1])        {            printf("YES\n");            return 0;        }        if(pp[i][0]==p[1])            ans1=1;        if(pp[i][1]==p[0])            ans2=1;    }    if(ans1&&ans2)        printf("YES\n");    else        printf("NO\n");    return 0;}

注意询问题读入与判断最好分离.
重写用时:2min.