ABC-049 C Daydream(https://atcoder.jp/contests/abc049/tasks/arc065_a)
について質問です。初心者で大変恐縮ですが、AC解答を見ながら書いた以下のコードがサンプルで弾かれてしまいます...ACになっていた解答(https://qiita.com/drken/items/fd4e5e3630d0f5859067#%E7%AC%AC-9-%E5%95%8F--abc-049-c---daydream-300-%E7%82%B9)
との違いが分からないので、教えて頂けると恐縮です。
開発環境はAtCoderのコードテストです。(C++ GCC9.2.1)
C++
1#include <bits/stdc++.h> 2#include <string> 3#define _GLIBCXX_DEBUG 4#define rep(i, n) for (int i = 0; i < (int)(n); i++) 5using namespace std; 6 7int main(){ 8 string s; 9 cin>>s; 10 vector<string> devide(4); 11 devide={"dream","dreamer","erase","eraser"}; 12 13 14 //後ろから解く=左右を反転する 15 reverse(s.begin(),s.end()); 16 rep(i,4) 17 reverse(devide.at(i).begin(),devide.at(i).end()); 18 19 bool can=true; 20 //端から切る(分割する) 21 rep(i,s.size()){ 22 bool can2=false; //4つのdevideのうち、devideできるものがあるか 23 for(int j=0;j<4;++j){ 24 //devideの中を探索する 25 string d=devide[j]; 26 if (s.substr(i,d.size())==d){ 27 //dでdevideできるか 28 can2=true; 29 i+=d.size(); 30 //devideできたら、iをそのdの文字数分だけ進める 31 } 32 } 33 if (!can2){ 34 can=false; 35 break; 36 } 37 } 38 if (can) 39 cout<<"YES"<<endl; 40 else 41 cout<<"NO"<<endl; 42}
回答1件
あなたの回答
tips
プレビュー