Hidden String
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1801 Accepted Submission(s): 642
1. 1≤l1≤r1<l2≤r2<l3≤r3≤n
2. The concatenation of s[l1..r1], s[l2..r2], s[l3..r3] is "anniversary".
There's a line containing a string s (1≤|s|≤100) consisting of lowercase English letters.
solution:
沒什麼可說的,直接看代碼~
#include<cstdio>
#include<cstring>
using namespace std;
char s[150], a[20] = { "anniversary" };
int len;
bool dfs(int d, int x, int y)
{
if (y == 11)return 1;
if (d > 3)return 0;
for (int i = x; i < len; i++)
{
int tmp1 = i, tmp2 = y;
if (s[i] == a[y])
{
while (tmp1 < len&&tmp2 < 11 && s[tmp1] == a[tmp2])
{
tmp1++; tmp2++;
}
if (dfs(d + 1, tmp1, tmp2))return 1;
}
}
return 0;
}
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
scanf("%s", s);
len = strlen(s);
if (dfs(1, 0, 0))printf("YES\n");
else printf("NO\n");
}
return 0;
}