[HDU] 5311 Hidden String [DFS]

    xiaoxiao2021-03-25  98

    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:

    1l1r1<l2r2<l3r3n

    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).

    题解

    这么简单的题,粗心的我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; }
    转载请注明原文地址: https://ju.6miu.com/read-6488.html

    最新回复(0)