Hidden String
2015-07-26 20:45
381 查看
给一段字符串,看看是否能分割成三个不相交的字符串组成“anniversary”
将每个字符的位置标记一下
最后暴力dfs一下就可以了
代码如下
将每个字符的位置标记一下
最后暴力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>
相关文章推荐
- 【剑指Offer面试题】 九度OJ1512:用两个栈实现队列
- [转]Android Volley完全解析(四),带你从源码的角度理解Volley
- SSL/TLS单向认证实现(JAVA、TOMCAT)
- HTML5简单进度条插件
- 《推荐系统实践》协同过滤算法源代码
- android dex中method及field 65536打包问题
- Ubuntu 14.04安装Broadcom BCM4352网卡驱动
- UVA 755 487--3279
- hdu 1008(Elevator)
- 20150726 填坑日记
- sift是图像匹配的非常经典的算法
- #1097 : 最小生成树一·Prim算法
- 如何实现圆形的进度条(ProgressBar)
- 【OpenGL】VAO与VBO
- HDU 1241 Oil Deposits 数草坪
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 【C++沉思录】句柄2
- HDU 2952 Counting Sheep (DFS)
- Java读写文件中文乱码问题折腾一个周末重要解决
- Web_url