您的位置:首页 > 其它

Hidden String

2015-07-26 20:45 381 查看
给一段字符串,看看是否能分割成三个不相交的字符串组成“anniversary”

将每个字符的位置标记一下

最后暴力dfs一下就可以了

代码如下

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int place[130];char s[150];char S[200];
char biao[20]="anniversary";
int l,len;
int dfs(int weizhi,int duanshu,int pipei,int last)
{
int i;l=strlen(s);
// printf("%d %c\n",pipei,biao[pipei]);
if(pipei==11&&duanshu<=3)
{
return 1;
}
for(i=weizhi;i<l;i++)
{
if(s[i]==biao[pipei])
{

if(pipei==0)
{
if(dfs(i+1,1,1,i))
return 1;
}
else if(i==last+1)
{
if(dfs(i+1,duanshu,pipei+1,i))
return 1;
}
else if(i!=last+1)
if(dfs(i+1,duanshu+1,pipei+1,i))
return 1;
}
}
return 0;
}
int main()
{
int n;int i;
scanf("%d",&n);
while(n--)
{
getchar();
memset(s,'\0',sizeof(s));
memset(S,'\0',sizeof(S));
memset(place,0,sizeof(place));
scanf("%s",s);

int l=strlen(s);
len=strlen(S);
if(l<11)
{
printf("NO\n");continue;
}
bool dd=false;
for(i=0;i<l;i++)
{
if(s[i]=='a')
{
if(dfs(i,1,0,0))
dd=true;
}
}
if(dd)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}

</cmath></cstring></algorithm></iostream>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: