Hidden String
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 52 Accepted Submission(s): 25
Problem Description
Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets a strings
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 ofs[l1..r1] ,s[l2..r2] ,s[l3..r3]
is "anniversary".
1.
2. The concatenation of
There are multiple test cases. The first line of input contains an integerT (1≤T≤100) ,
indicating the number of test cases. For each test case:
There's a line containing a strings (1≤|s|≤100)
consisting of lowercase English letters.
There's a line containing a string
For each test case, output "YES" (without the quotes) if Soda can find such thress substrings, otherwise output "NO" (without the quotes).
2 annivddfdersewwefary nniversarya
YES NO
题目链接:http://acm.hdu.edu.cn/showproblem.php?
pid=5311
题目大意:问在一个字符串里能不能找到连续三个区间拼成anniversary
题目分析:暴力,枚举每段的长度
#include <cstdio> #include <cstring> char s[200], con[] = "anniversary"; int main() { int T; scanf("%d", &T); while(T--) { scanf("%s", s); int len = strlen(s); bool flag = false; for(int i = 0; i <= 8; i++) { for(int j = i + 1; j <= 9; j++) { int k = 0; while(k < len && strncmp(con, s + k, i + 1) != 0) k ++; if(k == len) break; k += i + 1; while(k < len && strncmp(con + i + 1, s + k, j - i) != 0) k ++; if(k == len) break; k += j - i; while(k < len && strncmp(con + j + 1, s + k, 10 - j) != 0) k ++; if(k != len) { flag = true; break; } } } if(flag) puts("YES"); else puts("NO"); } }