codeforces 538 A Cutting Banner
题目链接:
思路:这道题想了很久也没想到一个好的解决方法,后来看了cf上的大神的代码,大多数大概就是用了c++函数库里的一个substr()函数(查找子串函数)很简明的一段代码完成的,还有一种就是直接暴力先一层循环找前i个子串,然后从i到length-1找后面的子串,看这两部分连接后能不能构成所求字符串。
代码1:
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
#define m(a,b) memset(a,b,sizeof(a))
#define debug(x) cerr<<#x<<"="<<x<<endl;
typedef long long ll;
int main(){
string s;
while(cin>>s){
int l=s.size();
bool flag=false;
for(int i=0;i<l;i++){
for(int j=0;j<l;j++){
if (s.substr(0,i)+s.substr(j+1)=="CODEFORCES")
flag=true;
}
}
if (flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}
代码2:
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
#define m(a,b) memset(a,b,sizeof(a))
#define debug(x) cerr<<#x<<"="<<x<<endl;
typedef long long ll;
int main(){
string s;
while(cin>>s){
int l=s.size();
bool flag=false;
for(int i=0;i<l;i++){
for(int j=i;j<l;j++){
string s1;
for(int k=0;k<i;k++)
s1+=s[k];
for(int k=j+1;k<l;k++)
s1+=s[k];
if (s1=="CODEFORCES"){
flag=true;
break;
}
}
}
if (flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}