题意
给定只由大写英文字母组成的字符串 s(长度不超过100),问删掉几个连续的字符(即删去一个子串)之后是否能得到 CODEFORCES
。
思路
既然长度不超过100,那么可以双重循环暴力。
第一重循环
i
i
i,枚举的是保留左边的。
第二重循环
j
j
j,枚举的是保留右边的。
也就是删掉
i
∼
j
i \sim j
i∼j这个区间内的字符。
最后把两边保留的字符拼起来看一下是不是CODEFORCES
.
代码
#include<bits/stdc++.h>
#include<queue>
#include<set>
#include<stack>
#include<vector>
#define ll long long
using namespace std;
const int N=1e5+10;
const int M=2023;
const int inf=0x3f3f3f3f;
char a[N];
string get1(int x)
{
string n;
for(int i=0;i<x;i++)n+=a[i];
return n;
}
string get2(int x)
{
string n;
for(int i=x+1;i<strlen(a);i++)n+=a[i];
return n;
}
int main()
{
scanf("%s",a);
for(int i=0;i<strlen(a);i++)
{
for(int j=i;j<strlen(a);j++)
{
string x=get1(i);
string y=get2(j);
string z=x+y;
if(z=="CODEFORCES")
{
cout<<"YES";
return 0;
}
}
}
cout<<"NO";
return 0;
}