#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <algorithm>
using namespace std;
string s;
string p="anniversary";
int f[105][105]; //字符串匹配数组
int dp[105][105]; //匹配字符串出现次数
int main()
{
int t;
cin>>t;
while(t--)
{
memset(f,0,sizeof(f));
memset(dp,127,sizeof dp);
cin>>s;
int n=s.length();
int m=11;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(s[i-1]==p[j-1]){
f[i][j]=f[i-1][j-1]+1;
}
else f[i][j]=0;
}
dp[n+1][m]=0;
for(int i=n;i>=1;i--)
for(int j=m;j>=1;j--){
dp[i][j]=min(dp[i][j],dp[i+1][j]);
if(f[i][j] && dp[i+1][j]<3){
int x=i-f[i][j]+1;
int y=j-f[i][j];
dp[x][y]=min(dp[x][y],dp[i+1][j]+1);
//cout<<x<<" "<<y<<" "<<dp[x][y]<<endl;
}
}
int flag=0;
for(int i=0;i<=n;i++){
if(dp[i][0]!=0 && dp[i][0]<=3) {
flag=1;
break;
}
}
if(flag) puts("YES");
else puts("NO");
}
return 0;
}
hdu5311 Hidden String dp找字符串前缀
最新推荐文章于 2021-08-26 12:17:14 发布