codeforces 538 A Cutting Banner

3442 단어
A. Cutting Banner
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
A large banner with word CODEFORCES was ordered for the 1000-th onsite round of Codeforcesω that takes place on the Miami beach. Unfortunately, the company that made the banner mixed up two orders and delivered somebody else's banner that contains someone else's word. The word on the banner consists only of upper-case English letters.
There is very little time to correct the mistake. All that we can manage to do is to cut out some substring from the banner, i.e. several consecutive letters. After that all the resulting parts of the banner will be glued into a single piece (if the beginning or the end of the original banner was cut out, only one part remains); it is not allowed change the relative order of parts of the banner (i.e. after a substring is cut, several first and last letters are left, it is allowed only to glue the last letters to the right of the first letters). Thus, for example, for example, you can cut a substring out from string 'TEMPLATE' and get string 'TEMPLE' (if you cut out string AT), 'PLATE' (if you cut out TEM), 'T' (if you cut out EMPLATE), etc.
Help the organizers of the round determine whether it is possible to cut out of the banner some substring in such a way that the remaining parts formed word CODEFORCES.
Input
The single line of the input contains the word written on the banner. The word only consists of upper-case English letters. The word is non-empty and its length doesn't exceed 100 characters. It is guaranteed that the word isn't word CODEFORCES.
Output
Print 'YES', if there exists a way to cut out the substring, and 'NO' otherwise (without the quotes).
Sample test(s)
input
CODEWAITFORITFORCES

output
YES

input
BOTTOMCODER

output
NO

input
DECODEFORCES

output
YES

input
DOGEFORCES

output
NO

제목: 문자열을 지정하고 연속된 문자열을 삭제합니다. 나머지 문자열로 구성된 문자열이 CODEFORCES와 같으면 YES를 출력하고, 그렇지 않으면 NO를 출력합니다.
분석: 문자열의 최대 길이가 100이면 폭력적으로 해결할 수 있다.절단의 시작점을 일일이 열거하고 절단의 끝점을 계산한 다음에 나머지 문자를 다른 문자열에 부여하여 마지막으로 비교한다.
CODE:
#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    char ch[105],tmp[]="CODEFORCES";
    while(cin>>ch){
        int len=strlen(ch);
        if(len<10){
            cout<<"NO"<<endl;
            continue;
        }
        bool flag=false;
        for(int i=0;i<len;i++){
            char ret[15];
            memset(ret,0,sizeof(ret));
            int cnt=0;
            int start=i,endd=len-(10-i);
            for(int j=0;j<start;j++)
                ret[cnt++]=ch[j];
            for(int j=endd;j<len;j++)
                ret[cnt++]=ch[j];
            if(!strcmp(ret,tmp)){
                cout<<"YES"<<endl;
                flag=true;
                break;
            }
        }
        if(!flag)
            cout<<"NO"<<endl;
        memset(ch,0,sizeof(ch));
    }
    return 0;
}

좋은 웹페이지 즐겨찾기