Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets a string
s
of length
1≤l1≤r1<l2≤r2<l3≤r3≤n
The concatenation of s[l1..r1] , s[l2..r2] , s[l3..r3] is “anniversary”.
Input
There are multiple test cases. The first line of input contains an integer
T
There’s a line containing a string
s
Output
For each test case, output “YES” (without the quotes) if Soda can find such thress substrings, otherwise output “NO” (without the quotes).
题解
这么简单的题,粗心的我WA了几发QAQ
代码如下
#include<stdio.h>
#include<string.h>
char S[]="anniversary";
char s[120];
int L=strlen(S);
int len;
bool dfs(int cnt,int s_i,int S_i){
if(S_i==L&&cnt>=0) return true;
if(s_i==len||cnt<0) return false;
for(int i=s_i;i<len;i++){
if(s[i]==S[S_i])
if(dfs(cnt+(i>s_i?-1:0),i+1,S_i+1))
return true;
}
return false;
}
int main()
{
int t;
scanf("%d",&t);
while(t--){
scanf("%s",s+1);
len=strlen(s+1)+1;
puts(dfs(3,0,0)?"YES":"NO");
}
return 0;
}