#include <map>
#include <set>
#include <stack>
#include <queue>
#include <cmath>
#include <ctime>
#include <vector>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define inf -0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mem0(a) memset(a,0,sizeof(a))
#define mem1(a) memset(a,-1,sizeof(a))
#define mem(a, b) memset(a, b, sizeof(a))
typedef long long ll;
char s[101];
char ans1[100]={"anniversary"};
int find1(int start1,int length,int start){
int len=strlen(s);
int j,z;
for(int i=start;i<len;i++){
int flag=1;
int count=0;
for(j=start1,z=i;j<start1+length&&z<len;j++,z++){
if(s[z]!=ans1[j]){
flag=0;
break;
}
count++;
}
if(flag==1&&count==length)//注意这里的长度也要相等
return z;
}
return 0;
}
int main(){
//freopen("data.in.txt","r",stdin);
int t,i,j,li1,li2;
scanf("%d",&t);
int case1=1;
while(t--){
//cout<<case1<<":";
case1++;
scanf("%s",s);
int len=strlen(ans1);
int flag=0;
for(i=1;i<=len;i++){
if(flag==1)
break;
li1=find1(0,i,0); //上一次匹配到哪里
if(li1==0)
break;
for(j=1;j<=len-i;j++){
if(flag==1)
break;
li2=find1(i,j,li1); //上一次匹配到哪里
if(li2==0)
break;
int li3=find1(i+j,len-i-j,li2);
if(li3!=0){
flag=1;
break;
}
}
}
if(flag==1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
HDU 5311.Hidden String
最新推荐文章于 2018-08-09 22:08:32 发布