*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. 1≤l1≤r1<l2≤r2<l3≤r3≤n
2. The concatenation of s[l1..r1] , s[l2..r2] , s[l3..r3] is "anniversary".
1. 1≤l1≤r1<l2≤r2<l3≤r3≤n
2. 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.
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).
Sample Input
2 annivddfdersewwefary nniversarya
Sample Output
YES NO注:暴力破解,将anniversity分解成三部分依次枚举,然后用str函数,注意边界#include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <cctype> #include <iostream> #include <algorithm> #include <stack> #include <set> #include <map> #include <string> using namespace std; #define pi acos(-1,0) #define INF 2147483647 int max(int a,int b) { return a>=b?a:b; } int main() { char a[101],b[101],c[101],s[101],ob[101]="anniversary"; int i,j,k,t,flag,x1,x2,x3,cc; char *p; while(scanf("%d",&t)!=EOF) { while(t--) { flag=0; scanf("%s",s); for(i=0;i<9;i++) { for(j=i+1;j<10;j++) { cc=0; for(k=0;k<=i;k++) a[cc++]=ob[k]; a[cc]='\0'; cc=0; for(k=i+1;k<=j;k++) b[cc++]=ob[k]; b[cc]='\0'; cc=0; for(k=j+1;k<11;k++) c[cc++]=ob[k]; c[cc]='\0'; p=strstr(s,a); if(p==NULL) continue; p=strstr(p+strlen(a),b); if(p==NULL) continue; p=strstr(p+strlen(b),c); if(p==NULL) continue; flag=1; } } if(flag==1) printf("YES\n"); else printf("NO\n"); } } return 0; }