HDOJ-----5311---Hidden String---暴力

    xiaoxiao2021-03-25  73

    Hidden String

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1961    Accepted Submission(s): 731 Problem Description 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. 1l1r1<l2r2<l3r3n 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 (1T100) , 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).   Sample Input 2 annivddfdersewwefary nniversarya   Sample Output YES NO 给一串字符,问能不能找出三段拼接在一块拼成anniversary,只能暴力查找了

    #include<cstdio> #include<iostream> #include<cstring> #define LL long long using namespace std; char s[110], m[20] = "anniversary"; bool solve(){ int c = strlen(s+1); for(int i = 1; i <= 9; i++){//分为三段,i是一段,j-i是一段,11-j是一段 for(int j = i+1; j <= 10; j++){ int r = 1; while(r <= c && strncmp(m, s+r, i)) r++;//检查第一段是否满足 if(r == c) continue; r += i; while(r <= c && strncmp(m+i, s+r, j-i)) r++; if(r == c) continue; r += j-i; while(r <= c && strncmp(m+j, s+r, 11-j)) r++; if(r <= c) return true; } } return false; } int main(){ int t, n; cin >> t; while(t--){ cin >> s+1; printf(solve() ? "YES\n" : "NO\n"); } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-33360.html

    最新回复(0)