首页 > 代码库 > BestCoder 1st Anniversary ($) Hidden String(深搜)
BestCoder 1st Anniversary ($) Hidden String(深搜)
题意:给一个字符串s,问s中先后出现的三个子串是否能组成“anniversary”
解析:深搜,搜的层次小于等于三而且找到完整字符“anniversary”即正确,否则错误
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; const int maxn = 1e6; char s[105]; int n; char m[]={"anniversary"}; bool dfs(int d,int st1,int st2) //d表示当前搜索的层次。st1表示当前从s串的st1位置開始查找,st2表示当前从“anniversary”的st2位置開始查找 { if(st2==11) return true; //找到完整序列且之前的搜索层次小于等于3,返回true if(d>=4) return false; //搜索三次还没找到。返回false int tmp1,tmp2; for(int i=st1;i<n;i++) { tmp2=st2; tmp1=i; if(s[i]==m[st2]){ while(s[tmp1]==m[tmp2]&&tmp1<n&&tmp2<11){ tmp1++; tmp2++; } if(dfs(d+1,tmp1,tmp2)) return true; } } return false; } int main() { int t; scanf("%d",&t); while(t--){ scanf("%s",s); n=strlen(s); if(dfs(1,0,0)) printf("YES\n"); else printf("NO\n"); } }
BestCoder 1st Anniversary ($) Hidden String(深搜)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。