考虑到每个字符串的长度不确定,而总长度是确定的,所以用strcat连接每个串+"<3",但是最后100000个'i'这组数据超时了。
改用string存每个字符串。
AC后去掉check()函数,发现也是对的。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#define MAXN 100000+12
using namespace std;
char temp[MAXN];
char str[MAXN];
int n;
string word[MAXN*2];
bool check(char c)
{
if(c>='a'&&c<='z')
return true;
if(c=='<'||c=='>') return true;
if(c>='0'&&c<='9') return true;
return false;
}
int main()
{
// freopen("in.txt","r",stdin);
scanf("%d",&n);
getchar();
word[0]="<3";
for(int i=1; i<=n; i+=1)
{
cin>>word[i];
word[i]+="<3";
}
getchar();
gets(str);
int flag;
int pos=0;
for(int k=0; k<=n; k++)
{
for(int i=0; word[k][i]!='\0'; i++)
{
flag=0;
for(int j=pos; str[j]!='\0'; j++)
{
// if(!check(str[j]))
// {
// break;
// }
if(str[j]==word[k][i])
{
pos=j+1;
flag=1;
break;
}
}
if(!flag)
{
puts("no");
return 0;
}
}
}
puts("yes");
return 0;
}