Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets a string s of length n. He wants to find three nonoverlapping substrings s[l1..r1] , s[l2..r2] , s[l3..r3] that:
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 (1≤T≤100), indicating the number of test cases. For each test case:
There’s a line containing a string s (1≤|s|≤100) consisting of lowercase English letters.
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; }