// 能力有限,做多少发多少。
A-DFS搜索
题目描述
最近,fried-chicken完全学明白了DFS搜索(如上图所示)!于是学弟向他请教DFS搜索,fried-chicken热心的进行了讲解:
所谓DFS搜索,就是给定一个字符串�s,问能否找到�s的一个子序列,使得该子序列的值为 DFS 或 dfs。
请你分别判断字符串�s中是否含有 DFS 子序列与 dfs 子序列。
子序列的定义:从原字符串中选择一些字符,将这些字符按照其在原串中的顺序拼接起来,得到的就是原字符串的一个子序列。例如:ABCDA的子序列可以为ACA、ABCDA、BA等等,但不能为ABE、CBA、AAD。
输入描述:
输入的第一行包括一个正整数�(1≤�≤100)T(1≤T≤100),表示测试用例的组数。 对每组测试用例,第一行是一个正整数�(1≤�≤50)n(1≤n≤50),表示输入字符串的长度。第二行是一个长度为�n的字符串�s,保证字符串中只含有英语小写字母与英语大写字母。
输出描述:
对于每组测试用例,输出空格分隔的两个数字,第一个数字表示是否含有 DFS 子序列,第二个数字表示是否含有 dfs 子序列。输出 1 表示含有,输出 0 表示不含有。
示例1
输入
复制
5 6 dafasa 6 dDFfSs 6 sfdDSF 6 DFSDFS 3 dfs
输出
复制
0 1 1 1 0 0 1 0 0 1
//刚开始想到的是find函数,后面发现不连续也可以,后面又怕下面种方法会超时,七弄八弄了不少时间。
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,n;string s;
cin>>t;
while(t--){
int a=0,b=0;
cin>>n;
getchar();
getline(cin,s);
for(int i=0;i<n;i++){
if(s[i]=='D'){
for(int j=i+1;j<n;j++){
if(s[j]=='F'){
for(int k=j+1;k<n;k++){