hdu--5311
来源:互联网 发布:php 0字节截断 编辑:程序博客网 时间:2024/06/05 02:39
Hidden String
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1705 Accepted Submission(s): 600
Problem Description
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.1≤l1≤r1<l2≤r2<l3≤r3≤n
2. The concatenation ofs[l1..r1] , s[l2..r2] , s[l3..r3] is "anniversary".
1.
2. The concatenation of
Input
There are multiple test cases. The first line of input contains an integer T (1≤T≤100) , indicating the number of test cases. For each test case:
There's a line containing a strings (1≤|s|≤100) consisting of lowercase English letters.
There's a line containing a string
Output
For each test case, output "YES" (without the quotes) if Soda can find such thress substrings, otherwise output "NO" (without the quotes).
Sample Input
2annivddfdersewwefarynniversarya
Sample Output
YESNO解题思路:这道题wa了6遍,后来改着改者就过了,表示递归好难,还是有点模糊.只是大概理解代码如下:#include<stdio.h>#include<string.h>char a[]={"anniversary"};char s[110];int la,ls;bool flag;bool dfs(int nows,int nowa,int sum){int i,j,k;if(sum>3)return false;if(flag)return true;for(k=0,i=0;i+nows<ls&&i+nowa<la;i++){if(s[nows+i]!=a[nowa+k]){for(j=nows+i+1;j<ls;j++){if(s[j]==a[nowa+k]){flag=dfs(j,nowa+k,sum+1); if(flag)return true;}}return false;//这一句,wa了三遍.* }else k++;}//if(nowa==la-1&&sum<=3)if(nowa+k==la&&sum<=3)return true;else return false;}int main(){int t;scanf("%d",&t);while(t--){flag=false;scanf("%s",s);ls=strlen(s);la=strlen(a);if(ls<la){printf("NO\n");continue;}for(int i=0;i<ls;i++){if(s[i]==a[0]){flag=dfs(i,0,1); if(flag)break;}}if(flag)printf("YES\n");else printf("NO\n");}return 0;}//测试数据 an*****ni***v*e*niver*r*sary YES // *a*nni**v**e**rsaryanniversary YES // annnnnnivennrversavery NO刚看了人家写的代码,挺好理解的附上代码:#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;char a[105];char b[20]="anniversary";int len;int flag;void dfs(int p1,int p2,int cnt){if(cnt>3){return;}if(p2>=11){flag=1;return;}for(int i=p1;i<len;i++){int x=i,y=p2;while(a[x]==b[y])//相等就跳过 x++,y++;dfs(x+1,y,cnt+1);//不相等,那么就继续往后找下一个区间 } }int main(){int T;scanf("%d",&T);while(T--){flag=0;scanf("%s",a);len=strlen(a);dfs(0,0,0);if(flag)printf("YES\n");elseprintf("NO\n");}return 0;}
0 0
- hdu--5311
- HDU 5311:Hidden String
- HDU 5311 Hidden String
- hdu 5311 Hidden String
- HDU 5311 Sequence
- hdu 5311 Hidden String
- hdu 5311 Hidden String
- HDU 5311 Hidden String
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- 分享一个语音增强的链接
- 亦庄国投3亿美元收购硅谷半导体设备商---ESM
- 头像裁剪插件Jcrop的使用示例
- jQuery选择器全集详解
- Git 命令总结
- hdu--5311
- Vickate_iOS内存与性能优化(随笔)
- LeetCode 205 Isomorphic Strings
- jQuery选择器总结
- shutdown immediate 超60mins 无法关闭
- 矩阵乘法
- xbox one开发机 错误代码E200 E305
- HTTPS接口加密和身份认证
- [leetcode] 223. Rectangle Area