[HDU] 5311 Hidden String [DFS]

来源:互联网 发布:刀锋铁骑伊达政宗数据 编辑:程序博客网 时间:2024/05/18 17:26

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

题解

这么简单的题,粗心的我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;}
0 0
原创粉丝点击